
Ingat posting yang pernah populer: “
PHP: A Fractal of Bad Design ”? Ketika saya pertama kali membacanya, saya bekerja di tempat yang bodoh dengan banyak proyek PHP yang sudah ketinggalan zaman. Dia membuat saya bertanya-tanya apakah saya harus pergi dan melakukan sesuatu yang sama sekali berbeda dari pemrograman.
Untungnya bagi saya, segera saya dapat mengubah tempat kerja saya, dan yang lebih penting, PHP dapat "sedikit" berevolusi dari versi 5. *. Dan hari ini, melalui artikel ini, saya ingin menarik bagi orang-orang yang tidak lagi memprogram dalam PHP atau terjebak dalam proyek-proyek warisan.
Spoiler: Hari ini, PHP, seperti hampir setiap bahasa pemrograman, penuh dengan kekurangan. Banyak fungsi utama masih memiliki tanda tangan tidak konsisten, pengaturan konfigurasi bingung, masih ada banyak pengembang menulis kode menyebalkan, karena dalam proyek mereka saat ini tidak berfungsi secara berbeda atau karena mereka tidak tahu sebaliknya.Hari ini, saya ingin melihat sisi baiknya: mari kita fokus pada apa yang telah berubah dan bagaimana menulis kode PHP yang bersih dan terawat. Saya ingin meminta Anda untuk menjatuhkan prasangka selama beberapa menit.
Setelah itu, Anda bisa memikirkan PHP persis sama seperti sebelumnya. Meskipun, kemungkinan besar, Anda akan terkejut dengan beberapa peningkatan yang dilakukan dalam PHP selama beberapa tahun terakhir.
TL DR
- PHP aktif dikembangkan, rilis baru dirilis setiap tahun
- Kinerja dari era PHP 5 berlipat ganda, jika tidak tiga kali lipat
- Ada ekosistem kerangka kerja dan perpustakaan yang sangat aktif
- Selama beberapa tahun terakhir, banyak fitur baru telah ditambahkan ke PHP, dan bahasanya terus berkembang.
- Alat seperti analisa statis telah banyak berkembang dalam beberapa tahun terakhir dan terus berkembang lebih lanjut.
Sejarah singkat
Sekilas tentang siklus rilis PHP. Versi saat ini adalah PHP 7.3, dan
versi 7.4 diharapkan pada akhir 2019. PHP 8.0 akan menjadi versi berikutnya setelah 7.4. Sejak akhir PHP 5. *, tim pengelola telah berusaha untuk mempertahankan siklus rilis tahunan, dan telah bekerja dengan sangat baik selama empat tahun terakhir.
Secara umum, setiap rilis baru didukung secara aktif selama dua tahun dan menerima tahun lain "perbaikan keamanan". Tujuannya adalah untuk memotivasi pengembang PHP agar tetap versi terbaru: menerapkan pembaruan kecil setiap tahun jauh lebih mudah daripada, misalnya, beralih dari 5,4 ke 7,0.
Kalender tanggal dukungan yang diperbarui untuk berbagai versi PHP dapat ditemukan di
sini .
Akhirnya, PHP 5.6 adalah rilis terakhir dari 5. * cabang, dan 7.0 adalah yang berikutnya. Jika Anda ingin tahu apa yang terjadi dengan PHP 6, Anda dapat mendengarkan
podcast Roundtable PHP.
Sekarang mari kita sanggah beberapa kesalahpahaman umum tentang PHP modern.
Kinerja PHP
Pada hari versi 5. * Kinerja PHP adalah ... rata-rata, paling bagus. Namun, dalam versi 7.0, bagian-bagian penting dari inti PHP ditulis ulang dari awal, menghasilkan peningkatan kinerja dua hingga tiga kali lipat.
Tetapi kata-kata tidak cukup. Mari kita lihat tesnya. Untungnya, orang lain menghabiskan banyak waktu untuk membandingkan kinerja PHP. Saya percaya
Kinsta memiliki daftar terbaru yang bagus.
Dimulai dengan versi 7.0, kinerja hanya meningkat. Sedemikian rupa sehingga aplikasi web PHP memiliki kemampuan yang sebanding, dan dalam beberapa kasus kinerjanya lebih baik daripada kerangka kerja web dalam bahasa lain. Lihatlah ruang tes yang luas
ini .
Tentu saja, kerangka kerja PHP tidak akan mengungguli C dan Rust, tetapi mereka jauh lebih baik daripada Rails atau Django, dan sebanding dengan ExpressJS.
Kerangka dan ekosistem
Berbicara tentang kerangka kerja: PHP tidak lagi terbatas pada WordPress. Saya dapat memberi tahu Anda sebagai pengembang PHP profesional: WordPress sama sekali tidak mewakili ekosistem modern.
Secara umum, ada dua kerangka kerja aplikasi web utama:
Symfony dan
Laravel . Dan beberapa yang lebih kecil: Zend, Yii, Cake, CodeIgniter, dll. Tetapi jika Anda ingin tahu seperti apa perkembangan PHP modern, pilihan yang baik adalah mengenal salah satu dari dua yang terbesar.
Kedua kerangka kerja (Symfony dan Laravel) memiliki ekosistem paket dan produk yang besar. Dari panel administratif dan CRM ke paket yang berdiri sendiri (dalam aslinya - "paket mandiri"), dari CI ke profiler, serta berbagai layanan seperti server soket web, manajer antrian, integrasi pembayaran; terus terang, terlalu banyak untuk mendaftar semuanya.
Namun, kerangka kerja ini dimaksudkan untuk pengembangan langsung. Jika Anda hanya perlu mengelola konten Anda, platform seperti WordPress dan CraftCMS akan semakin baik.
Salah satu cara untuk mengukur kondisi ekosistem PHP saat ini adalah dengan melihat pada packagist, repositori paket utama untuk PHP. Ini tumbuh secara eksponensial. Dengan ~ 25 juta unduhan per hari, kita dapat dengan tepat mengatakan bahwa ekosistem PHP bukan lagi kelemahan yang dulu.
Lihatlah grafik ini, yang menunjukkan jumlah paket dan versi dari waktu ke waktu. Ini juga dapat ditemukan di
situs web packagist .

Selain kerangka kerja aplikasi dan CMS, dalam beberapa tahun terakhir kami juga telah melihat peningkatan kerangka kerja asinkron.
Kerangka kerja dan server ini, ditulis dalam PHP atau bahasa lain, memungkinkan penggunaan PHP yang benar-benar tidak sinkron. Contohnya termasuk
Swoole ,
Amp, dan
ReactPHP .
Sejak kami memasuki dunia asinkron, hal-hal seperti soket web dan aplikasi dengan sejumlah besar operasi I / O telah menjadi sangat relevan di dunia PHP.
Milis internal - tempat di mana pengembang terkemuka mendiskusikan pengembangan bahasa - juga berbicara tentang menambahkan libuv ke kernel. Bagi mereka yang tidak tahu libuv, ini adalah perpustakaan yang sama yang digunakan Node.js untuk memastikan semua asinkroninya.
Bahasa itu sendiri
Meskipun async dan menunggu belum tersedia, dalam beberapa tahun terakhir banyak perbaikan telah dilakukan untuk bahasa itu sendiri. Berikut adalah daftar fitur baru yang tidak lengkap di PHP:
- Fungsi panah
- Operator gabungan dengan nol
- Sifat
- Properti yang Diketik
- Buka paket operator
- Kompiler Jit
- Antarmuka fungsi eksternal
- Kelas anonim
- Deklarasi Jenis Pengembalian
- Kriptografi modern
- Generator
- Lebih dari itu
Sementara kita berbicara tentang fitur bahasa, mari kita juga menyentuh topik bagaimana bahasa berkembang hari ini. Ada tim pengelola sukarelawan yang memajukan bahasa, sementara komunitas juga dapat menawarkan RFC.
RFC ini kemudian dibahas di milis internal, yang juga dapat dibaca di Internet. Sebelum fitur bahasa baru ditambahkan, suara harus diambil. Hanya RFC dengan mayoritas suara, setidaknya ⅔ dari semua pemilih, diizinkan untuk dimasukkan dalam inti.
Sekitar 100 orang ikut serta dalam pemungutan suara, dan tidak ada persyaratan untuk memilih pada setiap RFC. Kelompok orang yang memiliki kesempatan untuk memilih, tentu saja, termasuk pengelola, karena mereka harus mempertahankan basis kode. Selain mereka, ada grup yang anggotanya dipilih secara individual dari komunitas PHP. Grup ini terdiri dari pengelola dokumentasi PHP, penulis proyek PHP utama, dan pengembang terkemuka dari komunitas PHP.
Meskipun sebagian besar pengembangannya dilakukan atas dasar sukarela, salah satu pengembang PHP inti, Nikita Popov, baru-baru ini disewa oleh JetBrains untuk mengerjakan bahasa penuh waktu. Contoh lain adalah Linux Foundation, yang baru-baru ini memutuskan untuk berinvestasi dalam Zend Framework. Pekerjaan dan akuisisi semacam itu menjamin stabilitas untuk masa depan PHP dan pengembangannya.
Toolkit
Selain inti itu sendiri, selama beberapa tahun terakhir kami telah melihat peningkatan alat di sekitarnya. Analisis
mazmur statis seperti yang dibuat oleh Vimeo,
Phan, dan
PHPStan muncul di pikiran .
Alat-alat ini secara statis menganalisis kode PHP Anda dan melaporkan segala kesalahan umum, kemungkinan bug, dll. Dalam arti, fungsi yang mereka berikan dapat dibandingkan dengan TypeScript
(catatan penerjemah: penganalisa statis memperluas kemampuan bahasa untuk mencari kesalahan / cacat dengan demikian meningkatkan bahasa, TS secara kondisional melakukan hal yang sama di atas JS) , meskipun saat ini bahasa PHP tidak transparan, sehingga sintaks khusus tidak diperbolehkan.
Meskipun kita masih harus bergantung pada dockblock dan pengetikan, Rasmus Lerdorf, pencipta PHP,
menyebutkan ide untuk menambahkan mekanisme analisis statis ke kernel. Tugas ini mengandung banyak potensi, tetapi sangat besar dalam hal biaya tenaga kerja.
Berbicara tentang transposisi, perlu dicatat bahwa ada upaya untuk memperluas sintaks PHP bukan pada level kernel, tetapi pada level pustaka pengguna, seperti yang diterapkan dalam JavaScript. Sebuah proyek bernama
Pre tidak hanya itu: itu memungkinkan Anda untuk menggunakan sintaks PHP baru yang membungkus ke dalam kode PHP biasa.
Meskipun pendekatan ini telah terbukti dengan sendirinya di dunia JavaScript, pendekatan ini hanya dapat menghasilkan uang dalam PHP jika dukungan yang tepat diberikan untuk IDE dan analisis statis. Ini adalah ide yang sangat menarik, tetapi masih jauh sebelum bisa disebut arus utama.
Kesimpulannya
Terlepas dari semua ini, jangan ragu untuk menganggap PHP sebagai bahasa yang mengerikan. Dia jelas memiliki kekurangan dan warisan 20 tahun, tetapi saya dapat dengan yakin mengatakan bahwa saya suka bekerja dengannya.
Dengan itu, saya dapat membuat perangkat lunak yang andal, terawat baik, dan berkualitas tinggi. Klien tempat saya bekerja senang dengan hasil akhirnya, sama seperti saya.
Terlepas dari kenyataan bahwa Anda masih dapat menulis kode yang sangat buruk ketika bekerja dengan PHP, saya akan mengatakan bahwa ini adalah pilihan yang bagus untuk pengembangan web, jika digunakan dengan benar.
Apakah Anda tidak setuju? Tulis komentar mengapa!