Ada sekitar satu juta "kerangka kerja PHP". Dan kebanyakan dari mereka menagih diri mereka sendiri mengikuti pola MVC. Sementara itu selamat datang untuk mengatasi gaya pengkodean osCommerce (logika pemrosesan sangat dicampur dengan SQL dan HTML), ada tentu saja lebih sederhana dan lebih mudah untuk mengikuti pendekatan untuk mendapatkan desain aplikasi yang dapat dipertahankan.
Konsep MVC asli ditargetkan pada aplikasi GUI. Dan untuk Gtk / Python tampaknya layak untuk mengikutinya. Tetapi aplikasi web PHP tidak beroperasi pada Tampilan langsung (elemen GUI) dan runtime Controller yang persisten. Ini tentu saja keliru jika hanya menggambarkan kode yang digunakan + pengelompokan direktori atau penamaan kelas.
"MVC" tampaknya digunakan seperti kata kunci untuk kerangka kerja PHP. Dan saya benar-benar melihat satu atau dua kerangka kerja PHP dewasa mengakuinya, tetapi mendefinisikan ulang frasa untuk mencocokkan internasional.
Jadi, apakah ini umumnya minyak ular? Mengapa terminologi yang lebih baik tidak digunakan, dan konsep yang lebih masuk akal untuk dipelihara PHP dipelihara?
Beberapa alasan yang rumit
Mengapa saya menduga bahwa implementasi PHP tidak mengikuti pola MVC yang sebenarnya:
Model : dalam teori, Model harus gemuk dan mengandung logika bisnis, dan pengendali harus penangan yang tipis (input-> output). Pada kenyataannya, kerangka kerja PHP menganjurkan Model yang dangkal . CI dan Symfony misalnya menyamakan Model == ORM. Bahkan input HTTP ditangani oleh pengontrol, tidak diperlakukan sebagai model.
Tampilan : solusi dengan diskon AJAX, tidak mungkin ada Tampilan di halaman web. Kerangka kerja PHP masih memompa halaman. Antarmuka masih secara efektif mengikuti model HTTP biasa, tidak ada keuntungan dibandingkan aplikasi non-MVC. (Dan terakhir, tidak satu pun kerangka kerja php yang tersebar luas yang secara faktual dapat menampilkan ke Tampilan GUI alih-alih HTML. Saya telah melihat perpustakaan PHP yang dapat mengoperasikan Gtk / Konsol / Web, tetapi kerangka kerjanya tidak.)
Pengendali : Saya tidak yakin. Pengontrol mungkin tidak perlu berjalan lama dan terus aktif dalam model MVC. Namun dalam konteks kerangka kerja PHP, mereka kebanyakan meminta penangan. Bukan sesuatu yang bisa diperdebatkan, tetapi hanya terasa sedikit buzzwordish.
Akankah ada deskriptor yang lebih baik? Saya telah melihat akronim seperti PMVC atau HMVC. Meskipun deskripsi menjadi lebih ambigu di sana, mungkin ini akan menjelaskan kerangka kerja web saat ini yang kurang tipu?