Saya adalah pengembang web dan memiliki pengalaman mengembangkan beberapa aplikasi web dalam PHP. Saya memiliki ide untuk mengembangkan produk untuk diri saya sendiri dan memutuskan untuk menggunakan kerangka kerja berbasis MVC karena saya sangat menyukai ide MVC dan bagaimana seseorang dapat dengan mudah mengelola dan memodifikasi aplikasi tanpa kesulitan.
Saya memilih Zend Framework dan sepertinya lebih sulit daripada belajar bahasa pemrograman baru. Ada begitu banyak hal yang terjadi pada satu waktu bahkan untuk menjalankan aplikasi kecil.
Demikian pula gagasan tentang perutean sangat kompleks karena merupakan hal baru bagi seorang programmer inti. Saya tahu bahwa orang-orang di sini membaca ribuan pertanyaan seperti itu yang saya tanyakan tetapi saya tidak ingin belajar Zend Framework dalam semalam. Saya bersedia memberikan waktu sebanyak yang dibutuhkan tetapi sampai sekarang tidak masuk akal bagi saya. Ada ribuan kelas di perpustakaan Zend, tetapi bagaimana seorang noob tahu di mana harus menggunakan kelas specfic dan bagaimana menggunakannya? Saya masih kesulitan memahami bootstrap Zend Framework dan pemetaannya. Saya membaca manual, ikuti dan hal-hal mulai bekerja tetapi saya benar-benar tidak tahu persis bagaimana mereka sebenarnya terjadi.
Saya juga masih tidak tahu bagaimana model, tampilan dan pengontrol bekerja bersama dan bagaimana merencanakan aplikasi dalam Zend Framework. Ketika datang ke inti php saya sebenarnya punya ide dalam pikiran saya apa yang harus dilakukan dan daripada dengan mudah menerjemahkannya dalam kode tetapi dalam Zend Framework saya tidak tahu bagaimana menerjemahkan ide saya.
sumber
Jawaban:
Zend Framework sulit. Itu tidak dibangun sebagai kerangka kerja entry level, pengetahuan konsep yang terlibat diasumsikan 1 . Yang mengatakan, persyaratan pertama untuk Zend Framework 2.0 adalah untuk membuatnya sedikit lebih mudah:
Jadi bukan hanya Anda, sulit untuk semua orang - baca seluruh halaman wiki, ada beberapa hal yang diidentifikasi sebagai kompleks yang tidak perlu. Tetapi bahkan jika persyaratan di atas terpenuhi, tetap saja itu tidak akan menjadi kerangka kerja entry level, artinya itu bukan kerangka kerja yang harus Anda pelajari, tetapi yang harus Anda gunakan ketika Anda benar-benar memahami konsep-konsep yang terlibat.
Karena Anda masih belajar, akan jauh lebih berharga untuk membangun arsitektur MVC Anda sendiri. Posting blog terkenal Rasmus Lerdorf 2 " The no-framework PHP MVC framework " memberikan contoh MVC yang sangat sederhana dan bersih melalui PHP prosedural, tanpa kerangka kerja atau perpustakaan pihak ketiga lainnya yang terlibat.
Tetapi jika Anda benar-benar ingin belajar dengan suatu kerangka kerja, Anda harus mempertimbangkan kerangka kerja mikro alih-alih kerangka penuh. Slim memiliki basis kode yang sangat kecil, bersih, dan teruji tuntas dan harus ideal untuk pembelajaran. Saya belum bermain-main dengan kerangka kerja mikro lainnya, Anda harus melakukan penelitian sendiri dan memutuskan mana yang lebih baik untuk Anda.
Dan untuk pengantar perutean yang cepat dan kotor, lihat jawaban saya untuk pertanyaan ini . Ini bukan konsep yang sangat sulit untuk dipahami, tetapi Zend Framework membuatnya tampak jauh lebih banyak daripada yang sebenarnya .
1 Uraian terbaik yang pernah saya baca untuk ZF adalah bahwa itu adalah kerangka kerja kerangka kerja , bukan kerangka kerja aplikasi. Ini kekuatan mentah dan daftar fitur yang ekstrim tidak cocok untuk situs web kecil hingga menengah. Sayangnya saya tidak dapat menemukan di mana saya membacanya.
2 Baca penafian di bagian atas posting blog.
Pembaruan, terinspirasi oleh komentar @ Karpie:
Kerangka kerja tidak seharusnya sulit, inti dari kerangka kerja adalah untuk membuat segalanya lebih mudah. Ada kemungkinan bahwa bahkan dengan pemahaman yang kuat tentang konsep yang terlibat, ZF tidak cocok untuk Anda.
Ada banyak faktor subjektif yang terlibat ketika memilih kerangka kerja, dan kecuali setiap kerangka kerja lain tidak memiliki fungsionalitas yang Anda butuhkan - dan tidak dapat menulis sendiri, Anda harus menghindari ZF dan menggunakan kerangka kerja yang terasa lebih alami bagi Anda.
Jika Anda tahu konsepnya, kerangka kerjanya seharusnya tidak menghalangi.
sumber
Saya tidak suka kurangnya kemampuan menemukan ketika saya mulai menggunakan Zend Framework, terlalu banyak kelas bergantung pada array dan Anda harus mencari kunci apa yang dapat Anda / perlu mendefinisikan.
Tidak ada yang salah dengan memiliki metode set yang jelas atau bernama params, itu akan, sangat membantu untuk ditemukan.
Kerangka kerja Yii bahkan lebih buruk dengan hal semacam ini.
sumber
Beberapa masalah dengan ZF, yang membuatnya menjengkelkan (dan sulit bagi pemula) untuk bekerja dengan:
ORM tidak termasuk . Orang akan berpikir bahwa ini harus menjadi dasar kerangka kerja MVC modern, namun ZF hanya datang dengan
Zend_Db_Table
, yang tingkatannya sangat rendah. Anda dapat menggunakan Doctrine, tetapi kemudian Anda sendiri, itu tidak terintegrasi dengan ZF.Router URL yang tidak dapat dibaca dan membengkak . Misalnya dibutuhkan 9 baris kode untuk menentukan rute paling sederhana:
Mengingat jumlah pertanyaan yang terkait dengan ini, itu tidak apa-apa tetapi sederhana bagi kebanyakan orang. Juga, saya tidak bisa menahannya dan membandingkannya dengan Django, di mana yang setara dengan di atasnya
Zend_Acl
adalah cara rumit untuk sebagian besar kasus penggunaan. Biasanya Anda akan memiliki otentikasi untuk mengidentifikasi pengguna. Dan opsi untuk dengan mudah membatasi akses ke beberapa pengontrol hanya untuk pengguna yang diautentikasi. Bagi banyak pengguna kasus itu sudah cukup. Untuk kasus yang lebih rumit, tergantung pada logika bisnis dalam pengontrol untuk menentukan apakah pengguna memiliki izin untuk melakukan tindakan tertentu. Di ZF Anda tidak memiliki opsi untuk dengan mudah membatasi akses hanya untuk pengguna yang diautentikasi, cara standar adalah menggunakan ACL dan sistem peran, terlepas dari betapa sederhananya kebutuhan Anda sebenarnya.Direktori dan tata letak file bengkak . Struktur direktori yang direkomendasikan terlihat seperti ini:
sumber
Zend Framework seperti sekelompok perpustakaan independen yang bersama-sama berfungsi seperti framework. Sangat sulit untuk mengembangkan sesuatu pada saat yang sama dipisahkan dan "mudah digunakan". Untuk "mudah digunakan" maksud saya melakukan hal-hal kompleks dengan beberapa baris kode.
Jadi, memulai dengan Zend lebih sulit daripada kerangka kerja lainnya, seperti CakePHP. Tapi saya juga lebih mudah memperluas dan menyesuaikan aplikasi Anda tanpa kode kotor. Zend juga mengikuti standar dan pola desain di seluruh kodenya, jadi setelah Anda membaca kode kerangka kerja, Anda dapat menebak apa yang terjadi.
Ketika Anda mengatakan Anda tidak memiliki petunjuk tentang bagaimana model, pandangan dan pengontrol bekerja bersama, tolong, jangan salahkan kerangka ini. Ini mengimplementasikan MVC seperti kerangka kerja lainnya, kecuali itu memisahkan Model dari struktur Database, yang dalam banyak kerangka kerja diimplementasikan di kelas yang sama. Jadi Anda akan menghadapi banyak kelas seperti Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset, dll ...
Itu sebabnya saya pikir Zend Framework lebih rumit, karena sangat dipisahkan dan Anda dapat menggunakan kelasnya di proyek lain yang tidak menggunakan ZF.
sumber
Zend Framework membutuhkan landasan yang kuat dalam OOP dan Pola Desain. Dari pengalaman saya, saya hanya menemukan Java-JEE-Struts-Spring Programmer yang berpengalaman yang mudah akrab dengan Zend Framework. Rata-rata Pengembang PHP merasa sulit untuk mencerna konsep dan Arsitektur di balik Zend Framework. Tapi lihat, hei! Zend Framework berasal dari perusahaan 'Zend' yang menciptakan PHP di tempat pertama. Jadi perlu beberapa pemikiran mungkin jika tidak menghormati!
sumber
Saya percaya zend hanya untuk membuat segalanya menjadi rumit, MVC hanyalah sebuah penipuan yang secara logis berfungsi seperti PHP biasa. tetapi Anda mengembangkannya di depan MVC, seperti memisahkan file di direktori yang berbeda.
Ingatlah bahwa siapa yang mengatakan bahwa Zend sangat aman dan tidak dapat meretas, adalah orang bodoh. Zend juga dapat meretas dengan mudah jika Anda tidak menggunakan perlindungan injeksi Mysql. Saya ingin menyarankan Anda mendefinisikan fungsi Anda sendiri, kemudian memisahkan file Anda di direktori yang berbeda untuk membuatnya mirip seperti MVC menyimpan fungsi Anda, kelas, dan bahan inti lainnya dalam satu direktori yang disebut controller kemudian tambahkan halaman web Anda di direktori yang berbeda di mana Anda perlu untuk memasukkan semua file fungsi direktori ini akan dikenal sebagai view. Tempatkan file javascript dan css Anda di direktori yang berbeda yang akan dikenal sebagai model.
Ingat bahwa, di dunia ini banyak orang selalu bekerja keras untuk membuat sesuatu menjadi lebih rumit, karena mereka sendiri rumit untuk dipahami.
PHP adalah bahasa yang Anda pelajari dalam buku dan dari guru. Zend bukan apa-apa hanya kerangka kerja, untuk membuat hal-hal rumit bagi klien Anda. jadi kapan pun klien membutuhkan modifikasi apa pun, mereka akan berlari kembali ke pengembang nyata dan pengembang itu akan menagih Anda lebih banyak uang. Zend dilindungi semuanya hanya bohong, satu kesalahan seperti coding php biasa dapat menyebabkan situs web dapat diretas.
sumber
Paling tidak "quick start" thingy harus lebih mudah untuk membuat kerangka yang ramah ..... jika Anda lebih suka sesuatu yang lebih sulit sebagai hal yang lebih baik maka saya akan mengatakan "ZF adalah kerangka PHP terbaik", jika tidak BUKAN. Saya telah mengunduh ZF-2 dan mencobanya (jujur saya pemula untuk ZF). Yang menyedihkan adalah bahwa saya masih belum menemukan "panduan mulai cepat" yang solid dengan Kerangka Proyek sederhana di internet. Yang saya cari hanyalah cara sederhana untuk memasukkan file perpustakaan dan membuat folder proyek dengan fitur MVC. Saya telah menggunakan Codeigniter, Cake php, Yii tetapi saya merasa sangat tidak ramah. Ya saya tahu Zend meningkatkan PHP, tetapi itu tidak berarti bahwa itu adalah kerangka kerja terbaik atau apa pun yang akan Anda katakan.
sumber