Penulis: heiyeluren
Blog: http://blog.csdn.net/heiyeshuwu
Waktu: 5-5-2008
Baru-baru ini, saya hanya menggunakan beberapa kerangka kerja PHP asing utama (tidak termasuk kerangka dalam negeri) yang saat ini digunakan di China. Saya memiliki perasaan intuitif tentang kerangka kerja ini. Saya ingin berbagi secara singkat, kerangka kerja mana yang harus digunakan saat memilih. Gunakan sebagai acuan.
Kerangka referensi utama meliputi: CodeIgniter, CakePHP, ZendFramework, dan Symfony.
Catatan: Saya belum menggunakan banyak kerangka kerja dengan serius. Saya hanya mencobanya sebentar. Banyak pendapat saya yang mungkin belum matang atau salah. :-)
【CodeIgniter】
Situs web resmi: http://codeigniter.com
Situs web berbahasa Mandarin: http://codeigniter.org.cn
Panduan bahasa Mandarin: http://codeigniter.org.cn/user_guide
Video tutorialnya: http://codeigniter.org.cn/tutorials
Versi pengujian: CodeIgniter_1.6.1
Keuntungan:
1. Konfigurasinya sederhana, semua konfigurasi dikonfigurasikan menggunakan skrip PHP, dan efisiensi eksekusinya tinggi; memiliki fungsi perutean dasar dan dapat melakukan perutean sampai batas tertentu; memiliki fungsi Tata Letak awal dan dapat membuat tingkat tampilan antarmuka tertentu ; lapisan database dienkapsulasi dengan baik, dengan fungsionalitas dasar MVC
2. Cepat dan ringkas, tidak banyak kode, kinerja eksekusi tinggi, kerangka kerja sederhana, mudah digunakan, biaya pembelajaran rendah, dokumentasi terperinci; dilengkapi dengan banyak perpustakaan sederhana dan mudah digunakan, dan kerangka kerja ini cocok untuk aplikasi kecil
. Kekurangan:
1. Cukup pahami lapisan Model sebagai operasi database
2. Kerangka kerja ini sedikit sederhana dan hanya dapat memenuhi kebutuhan aplikasi berukuran kecil, namun sedikit kurang mampu memenuhi kebutuhan aplikasi berukuran sedang
.
Secara umum, CodeIgniter bermanfaat untuk menyelesaikan aplikasi yang sederhana dan cepat. Pada saat yang sama, ia dapat membangun tata letak tingkat tertentu untuk memfasilitasi penggunaan kembali template. Lapisan operasi data dienkapsulasi dengan baik, dan CodeIgniter tidak menggunakan banyak pola desain yang terlalu rumit. Performa dan keterbacaan kodenya bagus. Sedangkan untuk tambahan perpustakaannya juga cukup bagus, sederhana dan efisien.
【CakePHP】
Situs web resmi: http://www.cakephp.org
Panduan bahasa Mandarin: http://www.1x3x.net/cakephp
Tutorial video: http://search.you.video.sina.com.cn/s?key=cakephp
Versi uji: cake_1.1.19.6305
Keuntungan:
1. CakePHP adalah kerangka kerja yang paling mirip dengan RoR, termasuk metode desain dan metode operasi basis data Rekaman Aktif; tingkat desain sangat elegan, tidak dilengkapi dengan perpustakaan tambahan, semua fungsi adalah kerangka kerja murni, dan efisiensi eksekusi lumayan; lapisan database Fungsi hasOne dan hasMany sangat kuat dan cocok untuk pemrosesan bisnis yang kompleks; fungsi perutean dan fungsi konfigurasi tidak buruk; perancah otomatis (scaffold) pada dasarnya cocok untuk diterapkan; setiap lapisan MVC; dan memiliki fungsi skrip baris perintah operasi otomatis;
2. Dokumentasinya relatif lengkap dan berhasil dipromosikan di China. Kebanyakan orang mengetahui CakePHP. Biaya pembelajarannya menengah
.
1. Masalah yang sangat serius dengan CakePHP adalah ia memahami Model sebagai operasi lapisan basis data, yang secara serius mempengaruhi kemampuannya untuk beroperasi selain basis data.
2.
Fungsi cache CakePHP sedikit lemah, dan fungsi konfigurasinya sedikit lemah; CakePHP tidak cocok untuk aplikasi skala besar, tetapi hanya untuk aplikasi berukuran sedang. Biaya pembelajaran sedikit lebih tinggi untuk aplikasi skala kecil.
Secara umum, kerangka kerja CakePHP mewakili era yang sangat penting dan mewakili kerangka kerja PHP, dan saat ini memainkan peran yang sangat penting. Banyak kerangka kerja yang ditulis sendiri meniru metode CakePHP, yang merupakan produk penting dari CakePHP yang mengungkapkan metode pengembangan RoR Agile dan filosofi desain yang mempertimbangkan operasi database sebagai satu-satunya model adalah alat yang sangat baik untuk mengembangkan aplikasi dan prototipe yang cepat, juga layak untuk dipilih sebagai kerangka pengembangan untuk situs web Web 2.0.
【Zend Framework】
Situs web resmi: http://framework.zend.com
Panduan bahasa Mandarin: http://www.phpeye.com/zf
Tutorial video: http://framework.zend.com/docs/screencasts
Versi pengujian: ZendFramework-1.5.0
Keuntungan:
1. Diproduksi secara resmi, dilengkapi dengan banyak perpustakaan. Kerangka kerja itu sendiri ditulis menggunakan banyak pola desain. Arsitekturnya sangat elegan dan efisiensi eksekusinya sedang. Desain MVC relatif sederhana, memiliki fungsi perutean, dan file konfigurasi relatif kuat (dapat menangani XML dan php INI), berbagai perpustakaan sangat kuat dan memiliki fungsi paling komprehensif di antara semua kerangka kerja PHP, termasuk tidak hanya kerangka kerja, tetapi juga perpustakaan kelas besar (menggantikan PEAR Ini). fitur utamanya; secara intuitif dapat mendukung lapisan Model selain operasi database (lebih kuat dari CodeIgniter dan CakePHP), dan dapat dengan mudah menggunakan fungsi Loader untuk memuat Kelas lain yang baru ditambahkan; fungsi Cache sangat kuat, dan didukung dari Cache front-end ke Cache back-end. Cache terminal mendukung Memcache, APC, SQLite, file, dll.; fungsi operasi database sangat kuat dan mendukung berbagai driver (adaptor)
2. Dokumentasinya sangat lengkap, komunitas dalam negeri sudah sangat matang, dan saat ini digunakan oleh banyak website Web 2.0, dan biaya pembelajarannya sedang.
Kekurangan:
1. Fungsi MVC relatif lemah, lapisan Tampilan diimplementasikan secara sederhana (seperti tidak diimplementasikan), dan tidak dapat mengontrol halaman front-end dengan sangat kuat.
2. Tidak ada skrip otomatis. Untuk membuat aplikasi, termasuk file entri, Anda harus membuatnya secara manual. Biaya entrinya tinggi.
3. Zend Framework bukanlah masalah besar sebagai framework aplikasi berukuran sedang, dan hampir tidak dapat digunakan sebagai framework untuk aplikasi berskala besar, namun sebagai framework PHP skala besar yang sangat matang, masih memerlukan beberapa upaya
untuk melakukannya mengevaluasi:
Sebagai kerangka kerja yang diproduksi secara resmi, ambisi Zend Framework dapat diperkirakan. Ia ingin mengungguli kerangka kerja lain dan pada saat yang sama merangkum banyak perpustakaan kelas yang kuat untuk menyediakan layanan kerangka kerja terpadu kemampuan untuk mengembangkan produk yang sangat kuat, pada dasarnya Zend Framework pasti memiliki masa depan yang cerah Jika lebih banyak waktu dihabiskan untuk meningkatkan kerangka tersebut. Demikian pula dengan arsitektur Zend Framework sendiri yang relatif elegan, yang menunjukkan bahwa Zend secara resmi memiliki banyak ahli dan relatif maju dalam konsep desain. Meskipun beberapa fungsi tidak sepenuhnya diterapkan, seperti lapisan Tampilan, skrip otomatisasi, dll., semuanya bergantung di masa depan. Secara umum, Zend Framework adalah framework yang paling dinantikan, tentu saja tidak ada masalah jika Anda ingin menggunakannya dalam proyek Anda sekarang.
【Symfony】
Situs web resmi: http://www.symfony-project.org
Situs web berbahasa Mandarin: http://symfony-project.cn
Panduan Definitif: http://www.symfony-project.org/book
Referensi pembelajaran: http://sf.thecodecentral.com
Versi pengujian: symfony-1.0.13
Keuntungan:
1. Symfony adalah kerangka PHP paling kuat yang saya tahu, dan saya telah menggunakannya sejak lama, tetapi banyak fungsi yang belum ditemukan; ia sepenuhnya mengimplementasikan tiga lapisan MVC dan merangkum semuanya, termasuk $_POST, $_GET Data, penanganan pengecualian, fungsi debugging, deteksi data mencakup fungsi caching yang kuat, pemuatan Kelas secara otomatis (fungsi ini sangat keren), dukungan nasionalisasi i18n yang kuat memiliki operasi lapisan tampilan yang sangat kuat, dan dapat berisi banyak file secara sedikit demi sedikit; Fungsi konfigurasi yang sangat kuat. Menggunakan konfigurasi yml dapat mengontrol semua kerangka kerja dan perilaku program yang sedang berjalan, yang sangat kuat sehingga membuat orang tidak bisa berkata-kata; Anda dapat menentukan berbagai kelas sendiri sesuka hati, dan symfony dapat secara otomatis memuat (memuat otomatis) kelas-kelas ini, yang dapat digunakan dalam Dapat dipanggil sesuka hati dalam program ini mencakup proyek multi-level dan manajemen aplikasi: Proyek --> Aplikasi --> Modul --> Tindakan, yang dapat memenuhi kebutuhan banyak aplikasi dalam satu proyek, dan setiap lapisan dapat menentukan perpustakaan kelasnya sendiri. File konfigurasi, tata letak fungsi operasi baris perintah yang sangat kuat, termasuk membangun proyek, membangun aplikasi, membangun modul, menyegarkan cache, dll.;
2. Symfony jelas merupakan pilihan pertama untuk mengembangkan proyek yang besar dan kompleks, karena menggunakan Symfony akan sangat menghemat biaya pengembangan, dan tidak akan ada masalah ketika banyak orang berkolaborasi. Setelah Kelas dasar ditentukan di tingkat Proyek, modul apa pun bisa digunakan kembali. Kerugian dari penggunaan kembali kode yang banyak
:
1. Model operasi database menggunakan prop dan creole kelas berat, tetapi pada versi yang saya uji, sudah dipindahkan ke addon.
2. Fungsi cache tidak dapat dikontrol. Cache selalu di-cache setiap kali selama pengembangan dan debugging. Anda perlu menjalankan symfony cc dan symfony rc untuk menghapus dan membangun kembali cache;
3. Efisiensinya tidak terlalu tinggi, terutama proses parsing template dan membaca file konfigurasi yang memakan banyak waktu;
4. Biaya pembelajaran sangat tinggi, dan tidak ada komunitas dan dokumentasi yang matang di Tiongkok, bahkan manual berbahasa Mandarin pun tidak. Oleh karena itu, diperlukan banyak waktu untuk menguasai semua fungsi dan
mengevaluasi:
Symfony jelas merupakan kerangka kerja tingkat perusahaan, satu-satunya yang tampaknya dapat bersaing dengan kerangka kerja yang kuat di bidang Java. Hal-hal yang kuat secara alami rumit untuk dipelajari, tetapi juga berguna untuk pengembangan proyek untuk proyek yang kompleks. Saya rasa itu sepadan. Biaya pemeliharaan pada tahap selanjutnya relatif rendah dan dapat digunakan kembali sangat kuat. Sejalan dengan itu, jika Anda menggunakan Symfony untuk proyek Internet yang lebih kompleks, Anda harus mempertimbangkan masalah distribusi database. Kemudian Anda harus meninggalkan lapisan operasi database yang disertakan dengan Symfony dan mendefinisikannya sendiri.
[Komentar Umum]
Kerangka kerja di atas memiliki karakteristiknya masing-masing, dan semuanya merupakan proyek sumber terbuka. Namun, proyek yang ditargetkan oleh kerangka kerja tersebut berbeda. Secara umum, CodeIngiter lebih cocok untuk proyek kecil, sedangkan CakePHP dan Zend Framework lebih cocok untuknya proyek berukuran sedang, dan Symfony lebih cocok untuk proyek besar dan kelas berat. Saat memilih proyek, Anda harus sepenuhnya mempertimbangkan kemampuan penyesuaian dan skalabilitas kerangka kerja, karena setiap proyek tidak dapat menentukan apakah Anda akan membuat perubahan seiring dengan perubahan kebutuhan Anda.
Secara relatif, Zend Framework dan Symfony memiliki kemampuan yang kuat untuk mengatasi perubahan, terutama Kelas di lapisan model yang dapat dikustomisasi sesuka hati, sehingga sangat nyaman untuk menambahkan kelas bisnis atau pemrosesan data Anda sendiri digunakan dalam proyek menengah dan besar. CodeIngiter dan CakePHP juga dapat memainkan peran penting dalam proyek kecil dan menengah, pengembangan cepat dan konstruksi prototipe, dan sangat cocok untuk pengembangan proyek prototipe dengan tujuan yang tidak jelas. Cara terbaik untuk memahami kerangka kerja adalah dengan menggunakannya, dan cara terbaik untuk mempelajarinya adalah dengan menonton video. :-)
Orang yang baik hati mempunyai pendapat berbeda, dan orang bijak mempunyai pendapat berbeda. Saat memilih kerangka kerja untuk suatu proyek, harap periksa dengan cermat kebutuhan proyek dan perubahan di masa depan, lalu pilih kerangka kerja yang sesuai untuk mencapai keseimbangan yang wajar antara kecepatan pengembangan proyek dan pemeliharaannya nanti. Tentu saja, mungkin lebih cocok untuk menulis kerangka kerja sendiri. :-)
Saya telah melakukan evaluasi umum terhadap beberapa framework. Saya rasa banyak hal yang tidak tepat, jadi saya akan berhenti di situ saja. Komentar dan koreksi juga diterima!