PHP mempunyai rap yang teruk sekarang kerana dahulu "mengerikan". Artikel ini cuba menjawab beberapa dakwaan biasa tentang PHP, dengan matlamat untuk menerangkan kepada orang bukan teknikal bahawa PHP tidak seteruk yang dikatakan oleh ramai orang.
→Artikel ini diterjemahkan daripada: https://www.getparthenon.com/blog/php-isnt-that-like-really-bad/
1. Adakah ia menggalakkan amalan buruk?
Tidak lagi. Pada masa lalu, banyak pembangun telah diajar amalan yang sangat buruk daripada buku, dan akibatnya, kualiti kod PHP mereka sangat lemah. PHP juga digunakan untuk membolehkan anda melakukan beberapa perkara yang sangat pelik yang menjadikannya sangat mudah untuk dibina tetapi mimpi ngeri untuk dikekalkan.
Ini bukan lagi soalan biasa. Dengan pengenalan bahan pembelajaran berkualiti tinggi yang mudah dipelajari dan mudah diakses, pembangun baharu boleh mempelajari PHP dengan cara yang betul. Ini menghalang pembangun junior daripada menulis kod yang sangat menyakitkan untuk dikekalkan kerana mereka tidak tahu cara yang betul untuk membina sesuatu.
Dengan pengenalan rangka kerja, kebanyakan kod biasa yang membawa kepada banyak pengalaman buruk kini dilakukan secara automatik, oleh itu, pembangun hanya menggunakan rangka kerja dan rangka kerja akan mengekodkannya dengan betul.
Selain itu, beberapa amalan buruk selama ini disebabkan oleh ciri yang hilang, menyebabkan perkara yang tidak sepatutnya dibenarkan dibenarkan. Kini dalam kebanyakan kes, tidak mungkin untuk melaksanakan beberapa perkara yang telah ditulis sebelum ini untuk membawa kepada reputasi seperti ini.
Ringkasan
Ia tidak lagi menggalakkan amalan buruk...
Dengan menggunakan rangka kerja Amalan buruk dielakkan.
Terdapat banyak perbincangan tentang ciri bahasa sekarang. Ciri buruk tidak lagi disokong.
PHP menambah kebanyakan, jika tidak semua, ciri yang wujud dalam bahasa lain.
2. Adakah keselamatannya sangat lemah?
Pada masa lalu, aplikasi PHP selalunya kurang selamat kerana bahasa membenarkannya. Perkara ini tidak lagi digunakan kerana pembangunan aplikasi PHP berbeza sama sekali sekarang.
Kemasukan fail jauh dan setempat (di mana PHP membaca fail dari alamat lain daripada alamat asalnya) telah dialih keluar dengan menggunakan autoloader untuk memasukkan fail dan bukannya memasukkan fail secara dinamik.
Serangan skrip merentas tapak yang disebabkan oleh penggunaan HTML secara langsung dalam PHP telah dielakkan melalui penggunaan meluas sistem templat (yang secara automatik mengendalikan isu melarikan diri dan keselamatan untuk memaparkan kandungan dinamik) (satu pengguna menyertakan skrip JavaScript untuk dipaparkan kepada pengguna lain).
Dengan menggunakan pernyataan yang disediakan dalam SQL, serangan suntikan SQL (yang disebabkan oleh keperluan untuk membina pertanyaan SQL dan menghantarnya bersama-sama dengan data, di mana pengguna boleh menambah arahan SQL tambahan pada pertanyaan) dielakkan . Selain itu, penggunaan ORM juga adalah perkara biasa, yang memastikan data pengguna dan pertanyaan dihantar secara berasingan dan SQL tidak boleh menganggapnya sebagai arahan berasingan.
Elakkan pemalsuan permintaan merentas tapak (di mana pengguna boleh ditipu untuk melakukan tindakan tertentu di tapak anda) dengan perpustakaan borang yang digunakan secara meluas yang menggunakan sistem nonce.
Ringkasan
Tidak lagi.
Elakkan pemasukan fail jauh dan setempat dengan menggunakan autoloader (standard pada semua rangka kerja utama).
Elakkan serangan skrip merentas tapak (XSS) dengan menggunakan bahasa templat sebagai standard atau rangka kerja bahagian hadapan seperti React.
Elakkan suntikan SQL dengan menggunakan ORM dan menggunakan penyataan yang disediakan secara meluas.
Elakkan serangan pemalsuan permintaan merentas tapak (CRSF) dengan menggunakan token nonce (disokong secara automatik oleh semua rangka kerja utama).
3.
Ia bergantung pada apa yang anda bandingkan dengannya. Jika anda membandingkan PHP dengan Java, C atau Go, maka ia lebih perlahan. Tetapi jika anda membandingkan PHP dengan Python, Ruby, dan lain-lain, maka ia tidak perlahan. PHP adalah salah satu bahasa terpantas seumpamanya dan sentiasa bertambah baik dalam prestasi.
Kebanyakan masa, aplikasi anda lambat kerana pelayan terlebih muatan atau pertanyaan pangkalan data lambat. Masalah ini wujud dalam mana-mana bahasa.
Ringkasan
PHP agak perlahan berbanding bahasa yang disusun.
PHP agak pantas berbanding bahasa skrip lain.
Laman web yang perlahan biasanya bukan disebabkan bahasa yang digunakan tidak cukup pantas, sebaliknya disebabkan oleh isu prestasi yang disebabkan oleh pelayan atau pangkalan data.
4. Adakah skalabilitinya benar-benar lemah?
Hampir semua bahasa boleh berskala. Bahasa yang disusun (seperti Go, C, atau Rust) adalah lebih murah untuk skala daripada bahasa skrip (seperti PHP). Walau bagaimanapun, mereka tidak direka untuk tugas yang sama. Malah, semuanya adalah sama; ia hanya bergantung kepada bilangan pelayan yang anda gunakan. Jika anda menggunakan pelayan yang mencukupi, anda boleh menskalakan sebarang aplikasi. PHP adalah lebih murah untuk skala daripada bahasa skrip lain kerana ia memerlukan lebih sedikit sumber untuk bermula dan boleh dijalankan pada pelayan dengan memori yang lebih kecil dan lebih banyak CPU.
Selain itu, untuk skalabiliti, yang penting ialah pangkalan data. Jika anda boleh menskalakan pangkalan data anda, anda boleh menskalakan aplikasi anda. Pangkalan data lebih sukar untuk skala daripada pelayan aplikasi. Adalah mudah untuk menambah pelanggan lain yang membaca pangkalan data, bagaimanapun, adalah lebih sukar untuk menjalankan pangkalan data dengan cepat.
Ringkasan
Sebarang bahasa boleh berskala ia bergantung pada bilangan pelayan yang anda gunakan.
Masalah sebenar dengan penskalaan ialah pangkalan data dan bukannya bahasa aplikasi yang digunakan.
Jika anda boleh menskalakan data anda, anda boleh menskalakan aplikasi anda.
5.
Tidak. Setiap bahasa pengaturcaraan mempunyai bidang kepakarannya. PHP sangat bagus untuk aplikasi web. Anda harus menggunakannya untuk membina tapak web dan API.
Jika anda sedang membina aplikasi sistem di mana setiap milisaat dikira, gunakan Rust atau C.
Jika anda sedang membina aplikasi kecerdasan buatan, Python ialah pilihan yang baik.
Jika anda sedang membina aplikasi SaaS, PHP ialah pilihan yang baik.
Jika anda sedang membina aplikasi Android, Kotlin ialah pilihan yang baik.
Jika anda sedang membina aplikasi yang berjalan pada berbilang platform, Java ialah pilihan yang baik.
Ringkasan
Tidak, setiap bahasa mempunyai kes penggunaan terbaiknya.
Kes penggunaan terbaik untuk PHP ialah aplikasi web.
Go, Rust, C sesuai untuk aplikasi sistem.
Python sesuai untuk kecerdasan buatan.
Kotlin sesuai untuk aplikasi Android.
Java sesuai untuk aplikasi bebas platform.
6. Kesimpulan
Banyak perkara yang diperkatakan tentang PHP sudah ketinggalan 10 tahun. Pada pendapat kami, jika seseorang memberi anda maklumat yang 10 tahun ketinggalan zaman mengenai topik teknikal, orang itu mungkin bukan pakar teknikal yang anda mahu percayai.
PHP ialah bahasa pengaturcaraan yang baik untuk mencipta aplikasi web dan kami fikir ia adalah bahasa terbaik untuk pembangunan aplikasi web.
Ringkasan
Banyak aduan ini tertunggak 10 tahun.
Kami berpendapat PHP ialah bahasa terbaik untuk membina aplikasi web.