PHP-CS-Fixer adalah alat sumber terbuka yang dapat menegakkan, dan mendeteksi pelanggaran, gaya pengkodean PHP. Dengan aturan yang telah ditentukan sebelumnya, ini memungkinkan Anda memiliki gaya pengkodean ketat yang diberlakukan oleh alat sehingga Anda dapat meluangkan waktu untuk hal-hal yang lebih penting Show
Contoh aturanBerikut adalah beberapa contoh hal-hal yang dapat dilakukan PHP-CS-Fixer ke basis kode Anda Aturan. is_nullMengganti ekspresi _9 dengan 0
Aturan. mb_str_functionsGanti fungsi non-multibyte-safe dengan fungsi mb yang sesuai
Aturan. not_operator_with_successor_spaceOperator NOT logis 1 harus memiliki satu spasi tambahan _Aturan main yang tersedia sangat lengkap dan selalu bertambah jumlahnya. Anda dapat melihat daftar lengkap aturan yang tersedia di readme proyek. Anda mungkin juga ingin memeriksa konfigurasi PHP-CS-Fixer, yang merupakan situs yang memberikan contoh tentang apa yang dilakukan setiap aturan, jika deskripsinya tidak jelas Tip panas. Selain memperbaiki gaya, sering kali dapat digunakan sebagai alat pemutakhiran. PHPUnit 8 menambahkan tipe pengembalian _2 ke beberapa metode. Menjalankan aturan 3 PHP-CS-Fixer pada direktori 4 dapat langsung memutakhirkan suite pengujian Anda, membuatnya kompatibel dengan perubahan iniBagikan aturan AndaSaya menggunakan PHP-CS-Fixer di seluruh proyek saya dan memiliki seperangkat aturan yang menentukan gaya. Sampai sekarang, saya telah menyalin dan menempelkan aturan saya ketika saya memulai proyek baru, dan ketika aturan baru keluar, saya kemudian harus memperbarui konfigurasi saya di proyek saya yang sudah ada. Ini bukan alur kerja yang ideal karena Anda dapat dengan mudah lupa untuk memperbarui proyek tertentu, dan ini adalah sekumpulan pekerjaan manual Ternyata adalah mungkin untuk membagikan aturan Anda di beberapa proyek dan tim sehingga 5 akan memiliki semua proyek Anda menggunakan versi terbaru dari kumpulan aturan Anda pada waktu tertentuScaffolding repoKami akan membangun repo git untuk menampung set aturan berbagi kami. Untuk memulai, kami akan menginisialisasi repo git lokal dan membuat file yang diperlukan
Menentukan aturan AndaSeperti yang telah saya sebutkan sebelumnya, ada seperangkat aturan yang ekstensif, dan rilis baru terkadang berisi aturan baru, jadi menurut saya sangat berguna untuk melacak rilis PHP-CS-Fixer mana yang terakhir Anda tinjau aturan yang tersedia. Ini berarti ketika Anda mengupgrade ke versi yang lebih baru, Anda akan mengetahui rilis untuk mencari aturan baru yang mungkin ingin Anda masukkan ke dalam kumpulan aturan bersama Anda. Saya suka menambahkan rilis ulasan terakhir tepat di bagian atas file 6
Selanjutnya, kami ingin membuat file 6 kami mengembalikan array yang berisi kumpulan aturan kami. Menyimpan aturan dalam file terpisah sangat berguna karena daftarnya bisa sangat panjang, tergantung pada spesifikasi Anda. Ini juga memungkinkan pengembang lain untuk menarik kumpulan aturan Anda dan menggabungkannya dengan milik mereka sendiri, misalnya, jika Anda ingin menarik standar pengkodean Laravel dan menggabungkannya dengan beberapa standar tambahan tim Anda
PHP-CS-Fixer hadir dengan beberapa set aturan yang telah ditentukan sebelumnya. Semua aturan yang terkait dengan standar PSR-2 semuanya digabungkan ke dalam kumpulan aturan 8. Hal ini memungkinkan kami untuk ikut serta dalam standar tanpa harus menentukan setiap aturan satu per satuBeberapa aturan memiliki opsi yang terkait dengannya. Aturan 9 memungkinkan Anda untuk menentukan apakah Anda ingin sintaks array pendek atau panjangAturan lain ditentukan dalam daftar dengan menggunakan namanya dan nilai boolean, seperti yang terlihat pada aturan 0. Meskipun Anda dapat menghilangkan boolean, saya ingin memasukkannya untuk konsistensi, jadi setiap item dalam larik adalah pasangan 1, jadi saya tahu saya telah menyisih dari aturan tertentu secara eksplisitMetode pembantuUntuk membuat penggunaan aturan bersama Anda tidak menyakitkan di seluruh proyek Anda, kami akan membuat fungsi pembantu. Mungkin tidak masuk akal mengapa ini ada dulu, tapi ikuti terus, dan semuanya akan menyatu Untuk memastikan fungsi tidak bertentangan dengan fungsi global lainnya dalam proyek Anda atau dependensinya, sebaiknya letakkan fungsi tersebut di namespace. Buka file _2 dan tentukan ruang nama yang masuk akal untuk konteks Anda
Sekarang kita perlu mendefinisikan tanda tangan metode. Metode ini akan menerima turunan dari _3 dan juga serangkaian aturan yang akan memungkinkan proyek mengidentifikasi aturan tambahan yang diberlakukan berdasarkan proyek per proyek. Biasanya, saya akan mengatakan bahwa kami menginginkan konsistensi dan tidak boleh mengizinkan setiap proyek mengubah kumpulan aturan bersama – tetapi saya di sini bukan untuk memberi tahu Anda apa yang harus dilakukan, jadi kami akan membiarkan Anda melakukannya, tetapi Anda selalu dapat menghapusnya
Luar biasa. Itu datang bersama dengan baik. Hal terakhir sekarang adalah mengisi isi fungsi helper
_4 adalah bagaimana PHP-CS-Fixer akan mengetahui di mana mencari file PHP yang ingin Anda perbaiki. Kami menunda keputusan ini untuk proyek, karena masing-masing mungkin memiliki struktur direktori yang berbeda, mis. g. , proyek Laravel dibandingkan dengan paket LaravelAturan berisikoDi dalam tubuh fungsi 5 Anda dapat melihat kami memberi tahu konfigurasi untuk mengizinkan aturan "berisiko" dengan panggilan ke 6. Anda harus membaca dokumentasi dan memahami bagaimana aturan berisiko dapat memengaruhi proyek Anda. Sebagai contoh, kita akan melihat aturan 7. Jika Anda membaca dokumentasi PHP di 8 Anda akan mencatatnya
Ini berarti bahwa kedua panggilan implode ini akan memiliki hasil yang sama
Aturan _7 akan mengatur ulang argumen menjadi urutan yang terdokumentasi, tetapi jika proyek Anda telah mendefinisikan ulang perilaku 0 untuk mengharapkan parameter dalam urutan yang salah, dengan beberapa cara seperti runkit, mengubah urutannya dapat merusak kode AndaJadi harap baca apa yang dilakukan setiap aturan berisiko dan pahami cara kerjanya sebelum Anda menambahkannya ke kumpulan aturan Anda komposer. jsonUntuk menarik paket ke dalam proyek kami, kami perlu mengisi file 1 kami. Saya merekomendasikan menjalankan pemeriksaan gaya dalam Continuous Integration (C. I. ), jadi saya akan menyertakan PHP-CS-Fixer secara lokal (Anda juga dapat mengunduh PHP-CS-Fixer sebagai file Phar jika Anda memiliki konflik paket)Buka file _1 dan pastikan untuk menetapkan 3 unik yang masuk akal bagi Anda 0Mendorong ke penyediaLangkah terakhir dalam menyiapkan repositori kami adalah mendorongnya ke solusi git yang dihosting. Buat repositori di penyedia pilihan Anda dan tambahkan sebagai asal ke repo lokal Anda. Saya akan menggunakan GitHub _1Kami sekarang memiliki paket aturan bersama yang tersedia di GitHub. Selamat Mengkonsumsi aturan bersama AndaSekarang kami sedikit mengganti persneling untuk fokus pada bagaimana Anda dapat menggunakan aturan bersama baru Anda di proyek lain. Tutup repo aturan bersama Anda dan buka proyek tempat Anda ingin menggunakannya. Ada beberapa penyiapan awal, tetapi setelah Anda melakukannya, hanya 5 yang Anda perlukanMemerlukan repositori AndaComposer memungkinkan kita untuk meminta repositori dari platform Git yang dihosting, tanpa harus mengirimkannya ke Packagist. Mengingat repo semacam ini kemungkinan besar bersifat internal, tidak banyak keuntungan yang didapat dengan menambahkannya ke Packagist Untuk mewujudkannya, tambahkan nama paket Anda secara manual ke proyek 5 blok. Saya tidak perlu mengunci gaya saya ke versi tertentu, jadi saya hanya menggunakan 6 yang berarti gaya terbaru akan selalu ditarik. Namun, Anda dapat membuat versi gaya Anda – tetapi itu terserah AndaKarena kami tidak akan mengirimkan ke Packagist, kami harus memberi tahu Composer di mana menemukan paket tersebut. Kami melakukannya dengan menggunakan blok _2Sekarang kami memberi tahu Komposer untuk meminta paket kami sebagai ketergantungan 7 _3Setup konfigurasi PHP-CS-Fixer FinderAgar PHP-CS-Fixer mengetahui file apa yang ingin Anda targetkan, Anda perlu menentukan setiap direktori atau file dengan instance 3. Ini adalah versi turunan dari _9, jadi untuk dokumentasi lengkap tentang semua batasan yang dapat Anda gunakan, lihat dokumenSebagai contoh kita, saya akan berpura-pura berada dalam aplikasi Laravel dan menyiapkan pencari saya untuk menelusuri direktori yang saya tahu ingin mematuhi konvensi gaya saya PHP-CS-Fixer mengharapkan konfigurasi Anda berada dalam file 0, jadi kami akan membuatnya _4Buka file ini dan tambahkan setup finder berikut untuk aplikasi Laravel Anda. Anda juga dapat menyertakan folder lain yang ingin Anda perbaiki, tetapi ini berfungsi sebagai default yang masuk akal 5Kami sekarang siap untuk meneruskan pencari kami ke fungsi pembantu yang kami buat beberapa menit yang lalu. PHP-CS-Fixer mengharapkan file ini mengembalikan instance 1, yang persis seperti yang dikembalikan oleh fungsi pembantu kami _6Sekarang posisikan diri Anda pada posisi penjepit sementara kami secara otomatis memperbaiki gaya pengkodean kami di semua direktori ini. Lompat ke terminal dan jalankan perintah berikut untuk menyaksikan keajaiban terjadi… _7Berjalan di CISebaiknya terapkan aturan gaya Anda selama C. I. Anda dapat melakukan ini dalam beberapa cara. Anda bisa melakukan "dry run", yang akan gagal jika mendeteksi pelanggaran gaya kode _8Atau, Anda bisa memiliki C. I. jalankan pemecah masalah dan komit otomatis perubahan ke repo Anda. Jika Anda menggunakan tindakan GitHub, lihat artikel hebat ini yang ditulis oleh Stefan Zweifel tentang bagaimana Anda mengimplementasikannya BungkusTerima kasih telah datang dalam perjalanan ini. PHP-CS-Fixer adalah alat yang hebat, dan mudah-mudahan, jika Anda menjalankan beberapa proyek yang berbagi gaya pengkodean standar, pendekatan ini mungkin berguna Diajukan Berita timacdonald Mengembangkan aplikasi web yang menarik dan berkinerja dengan fokus pada TDD. Mengkhususkan diri dalam proyek PHP / Laravel. ❤️ membangun untuk web |