Apa itu "PHP Way"?

8

Saya melihat referensi konstan ke "Way," seperti deskripsi kerangka kerja tertentu atau aplikasi sebagai "Pythonic," orang tertentu sebagai "hacker Hack," atau "kode Ruby yang sebenarnya," tetapi di mana "peretas PHP," aplikasi "PHP-ic", "gaya PHP yang sebenarnya"?

Ini membuat saya berpikir - apakah PHP bahkan memiliki gaya yang pasti? Mengatakan PHP mudah "dapat diubah" ke gaya lain tidak masuk hitungan, karena hal yang sama berlaku untuk bahasa apa pun yang masuk akal.

Setiap input sangat dihargai.

Jonathan Chan
sumber
3
"Jika masih bekerja, itu belum selesai"
sevenseacat
quora.com/How-does-a-programmer-become-a-brogrammer - mungkin kita bisa menyebutnya "Phmoronic"?
psr

Jawaban:

13

Tidak seperti banyak bahasa pemrograman lainnya, PHP tidak memiliki pemikiran pemersatu atau serangkaian ide inti: PHP dimulai sebagai kumpulan skrip perl yang sangat pragmatis, dan fitur ditambahkan sesuai kebutuhan, tanpa banyak proses desain formal. Hasilnya adalah bahasa yang cukup bermanfaat dan lengkap, tetapi tidak terlalu konsisten dengan sendirinya. Popularitas bahasa yang luar biasa itu memperburuk keadaan; segera setelah fitur baru diperkenalkan, secara praktis diatur dalam batu, karena semua orang mulai menggunakannya. Beberapa kesalahan desain telah dikonsolidasikan, dan tim PHP memiliki waktu yang sangat sulit membuat orang menjauh dari mereka - register_globalsdan magic_quoteshanya dua contoh hal-hal yang tampak seperti ide bagus pada saat itu tetapi ternyata merajalela.

Faktor lain adalah budaya yang tumbuh di sekitar PHP. Ketika popularitasnya mulai tumbuh, kasus penggunaan khas untuk PHP adalah menambahkan potongan kecil fungsi sisi server ke dalam dokumen HTML yang statis. Sebagian besar audiens target adalah penggemar dan bukan pemrogram yang menggunakan PHP untuk menambahkan sedikit hal dinamis ke situs web statis mereka. Budaya yang dihasilkan sangat pragmatis, tanpa banyak minat untuk membangun 'cara yang tepat'; Meskipun dimungkinkan untuk menulis PHP yang cukup elegan, sebagian besar komunitas pengguna tidak begitu tertarik padanya, asalkan berfungsi.

Sebaliknya, bahasa-bahasa seperti python, ruby, Lisp, C #, Haskell dan lainnya telah memiliki filosofi sejak awal, dan komunitas umumnya merangkulnya dan mendorong bahasa untuk menghayati itu. (Jika Anda tertarik, ketikkan import thissesi python interaktif). Memiliki filosofi berarti ada pedoman untuk menggunakan dan memperluas bahasa, dan itu juga mengarah pada komunitas yang lebih homogen - jika Anda tidak setuju dengan filosofi, Anda lebih cenderung pergi begitu saja dan menemukan yang cocok untuk Anda. ; komunitas yang dihasilkan lebih mungkin untuk mencapai konsensus atas semua hal.

Yang mengatakan, PHP memang memiliki kekuatan dan kelemahan, serta kasus tepi tidak jelas; menulis kode PHP idiomatis berarti menggunakan kekuatan dan menghindari kelemahan dan ketidakjelasan, seperti halnya dengan bahasa lain.

tammmer
sumber
Dengan cara apa php tidak konsisten? Kesederhanaan semata dari bahasa tersebut mengarah ke bahasa yang sangat ortogonal yang tidak perlu Anda tebak dengan sintaksis apa yang digunakan. Khususnya struktur data yang kompleks (pohon, daftar tertaut, grafik tepi) ditangani hampir sama baiknya dengan Python dan tentunya lebih baik daripada di Java atau C ++ STL.
James Anderson
3
PHP menempatkan semuanya di namespace global; berbagai fungsi API menggunakan konvensi penamaan yang berbeda, beberapa dari mereka memodifikasi argumen mereka di tempat sementara yang lain dalam situasi yang sama mengembalikan argumen yang dimodifikasi, hanya setengah dari fungsi string yang tersedia sebagai versi mb_XXX (), ada tiga jenis variabel dengan berbeda aturan pelingkupan, Anda memanggil fungsi untuk menentukan konstanta, Anda dapat (tetapi tidak harus) memanggil fungsi untuk membuat atau membaca variabel global, saya bisa berjalan selama berabad-abad.
tdammers
@tdammers PHP tidak menempatkan "segalanya" di ruang global, sementara banyak fungsi di ruang nama global, banyak yang tidak - lihat, misalnya, PDO atau SPL. Variabel global, lokal, dan statis ada dalam banyak bahasa dan sama sekali tidak unik untuk PHP. Anda dapat mendefinisikan konstanta tanpa memanggil suatu fungsi. Anda dapat menulis sebuah fungsi yang mengakses global (itu semacam titik memiliki global) tetapi sama sekali tidak ada yang salah dengan itu.
StasM
Saya pikir karena alasan sederhana bahwa jawaban ini benar-benar memberikan dukungan pada klaimnya, maka itu harus dipilih sebagai Jawaban Terbaik, tetapi jawaban lainnya juga sangat membantu (dan membantu saya menyadari berapa banyak argumen yang dapat diajukan oleh pertanyaan seperti ini!)
Jonathan Chan
15

Saya pikir ketika orang mengatakan cara PHP, itu memiliki bobot negatif yang melekat padanya, itulah istilah yang kami gunakan di toko poligot (Python, C #, Ruby). Seperti "just-do-it-and-throw-it-out", seperti di dalamnya bisa memiliki goto's, menangani file bocor, kerentanan injeksi SQL, loop super mendalam bersarang, fungsi 3000-line dan masih digolongkan sebagai ' PHP-cara '. Jika dalam peer review seseorang mengatakan kepada saya bahwa kode itu sangat 'PHP-way', saya akan sangat tersinggung.

Saya menghargai ini akan menyebabkan beberapa api, jadi saya akan mengakui bahwa ada orang yang dikenal menghasilkan kode PHP yang baik, dan PHP digunakan di beberapa lokasi produksi utama. Saya hanya mengatakan apa yang orang-orang pikirkan dan lihat paling sering, pendapat itu dilakukan oleh tindakan mayoritas, bukan minoritas.

sa93
sumber
5
Lucunya semua yang Anda sebutkan sama sekali tidak ada hubungannya dengan PHP - dan sampai saat ini bahkan tidak ada goto, jadi tidak ada kemungkinan ada begitu banyak kode PHP di luar sana dengan goto yang memberi nama pada gaya yang berbeda.
StasM
StasM seseorang dapat membuat monster yang unmaintable, tidak aman atau berkinerja buruk (atau campuran semua) dalam bahasa apa pun. VM / penerjemah saat ini jarang menjadi masalah. Apa yang saya katakan adalah bahwa hambatan PHP rendah untuk masuk, polusi namespace global dan fitur / kelemahan lainnya dari bahasa tampaknya menarik kerumunan orang-orang-bersama-sama-dan karenanya reputasi. Ini adalah reputasi yang tidak dapat disangkal, saya hanya mencoba untuk menyinari yang ada di atasnya
sa93
StasM, Anda melewatkan intinya, saya tidak pernah mengatakan itu akan mencakup gotos.
sa93
3
@ sa93 - Saya penggemar php besar, dan telah menggunakannya sejak php3. StasM cukup benar - sebagian besar orang menganggap output PHP buruk. Ini untuk alasan yang bagus, sebagian besar. Hanya perlu hidup dengan itu, di sisi positifnya, membuatnya cukup mudah untuk bersinar dalam kontrak php.
Jonno
Saya melihat banyak kode J2EE yang jauh lebih buruk daripada kode php yang saya lihat.
James Anderson
4

Jika ada "cara php" nya "Lakukan saja!".

Meskipun php memiliki semua konstruk OO modern Kelas, Ruang Nama Modul, Introspeksi dll. Plus semua barang pemrograman dinamis biasanya dikaitkan dengan bahasa yang lebih fashoinable seperti Python. Anda jarang melihat mereka digunakan hanya untuk itu, atau, lihat programmer PHP terobsesi dengan "kemurnian" implementasi mereka.

Saya tidak tahu mengapa harus ada perbedaan budaya - tetapi ada di sana.

Ada sejumlah kengerian di luar sana dan ini mungkin mencerminkan bahwa begitu banyak kode "php" adalah "My First Webapp" atau bahkan "My First Program".

Secara pribadi saya merasa cukup mudah untuk membaca / memahami kode php yang ditulis secara profesional, umumnya lebih mudah dibaca daripada aplikasi Java semua kelas Pabrik dan setengah logika dalam file XML.

James Anderson
sumber
4

Saya akan mengatakan cara PHP adalah "Duct Tape Programmer" - kirimkan dengan cepat, kirimkan dengan cepat, khawatir tentang segala sesuatu yang lain nanti dan patch bug cepat tanpa memikirkan masa depan. Sementara itu sama sekali bukan kecaman terhadap PHP itu sendiri (Anda dapat melakukannya dalam bahasa apa pun), baru-baru ini pengembang PHP mulai bertanya-tanya tentang rekayasa perangkat lunak dan pola desain, SOLID, pengujian, dan sejenisnya.

Wayne Molina
sumber
2

Saya akan mengatakan gagasan tentang PHP itu praktis. Apa artinya dalam setiap kasus terpisah sulit untuk didefinisikan, tetapi misalnya jika melakukan sesuatu memerlukan satu bentuk HTML dan lima baris kode, jangan menempatkan kerangka kerja MVC dengan 20 kelas di sana. Dan, sebaliknya, jika Anda mengembangkan aplikasi untuk 20 juta orang untuk digunakan, letakkan kerangka kerja di sana dan miliki logika, presentasi, dan kontrol aliran secara terpisah. Tapi tidak ada yang istimewa tentang PHP di sini, jadi saya kira itu mungkin bukan jawaban yang memuaskan.

Saya tidak berpikir ada satu gaya PHP. Saya pribadi berpikir bahwa anggapan bahwa ada satu gaya yang cocok untuk semua pengguna bahasa hanya masuk akal jika bahasa tersebut memiliki bidang penggunaan yang sangat terbatas, yang jelas tidak berlaku untuk PHP.

Aplikasi spesifik memiliki gaya mereka - misalnya, jika Anda melihat ke dalam Zend Framework, Anda akan melihat kode yang sangat OO dengan antarmuka yang ditentukan, API yang dikendalikan, dll. Di mana Anda dapat dengan mudah mengenali pola desain yang sudah dikenal. Di sisi lain, ada aplikasi yang mengambil lebih banyak pendekatan prosedural, seperti Drupal.

Saya mengerti itu tidak memberi Anda banyak "gaya PHP benar", tapi itu mungkin karena tidak ada hal seperti itu. Ada praktik terbaik, dll. Tapi bukan itu yang Anda cari, saya khawatir.

StasM
sumber
1

Beberapa orang menggunakan php sebagai tanda penghinaan - hanya fakta, secara pribadi saya penggemar.

Namun bagi saya hal yang mendefinisikan pendekatan php pada dasarnya adalah kurangnya konteks aplikasi. Tidak ada konteks aplikasi yang dibangun dibandingkan dengan .NET atau dunia Java.

Hal ini menyebabkan server php pada dasarnya tidak memiliki kewarganegaraan (selama sesi dipindahkan ke server lain misalnya disk bersama atau db)

Ini adalah apa yang saya pikirkan ketika saya memikirkan cara php.

Jonno
sumber
1

Jawaban lain! Kali ini lebih merupakan pengamatan pada "budaya" pemrograman.

PHP berada di posisi yang sama dengan Javascript (ECMAscript to pedants!) Ada di sekitar tahun 2002. Sekelompok kecil programmer ahli menghargai keunggulannya, pendapat umum adalah bahwa itu adalah bahasa scripting yang buruk dan tidak jelas yang hanya berguna untuk menggulirkan spanduk dan pengguna yang mengganggu. dengan popup.

Kemudian datanglah AJAX dan tiba-tiba seluruh dunia kagum dengan kekuatan dan keanggunan Javascript.

Meskipun sebenarnya tidak seanggun Javascript, php memang berbagi banyak kekuatan dan kesederhanaan bahasa itu, dan ada konsensus pengumpulan tentang cara "benar" untuk memprogram php untuk sistem besar.

Indikator lain tentang seberapa baik php dalam lingkup spesialis adalah kurangnya kerangka kerja untuk aplikasi yang paling serius. Banyak programmer yang sangat berpengalaman senang hanya menggunakan "php" karena berdiri tanpa bantuan beberapa kerangka kerja mega. Banyaknya kerangka kerja dan alat bantu lain menunjukkan kepada saya bahwa Java, Python dll tidak bisa melakukannya dengan benar dan bahwa programmer yang menggunakan bahasa ini sangat tidak bahagia dan tidak yakin tentang bagaimana aplikasi web harus dibuat. Namun ketika mereka melihat bagaimana kode php sederhana murni digunakan untuk berhasil mengimplementasikan situs web yang kompleks tanpa konfigurasi XML yang tidak terbaca, dialek template bulan ini, atau, roll dialek ORM Anda sendiri, mereka menarik kesimpulan yang salah - bahwa php harus buruk karena tidak memiliki kelas IntegerFactory, injeksi dependensi dll.

Sebenarnya semua hal ini mudah diimplementasikan dalam php dan sering digunakan jika diperlukan - hanya saja implementasinya biasanya beberapa baris php dan tidak dikenali oleh programmer yang terbiasa melakukan hal yang sama dengan masif perpustakaan dan API kompleks.

php sederhana. "Sederhana" adalah pelengkap tertinggi yang dapat Anda berikan perangkat lunak dan paling sulit untuk dicapai.

James Anderson
sumber