Saya ingin mendengar dari mereka yang telah menggunakan Ajaran 2 (atau lebih baru) dan Propel 1.5 (atau lebih baru). Sebagian besar perbandingan antara dua objek pemetaan relasional ini didasarkan pada versi lama - Doktrin 1 versus Propel 1.3 / 1.4, dan kedua ORM mengalami perancangan ulang yang signifikan dalam revisi terbaru mereka. Sebagai contoh, sebagian besar kritik terhadap Propel tampaknya berpusat di sekitar kelas "ModelName Peer ", yang sudah usang dalam 1,5 dalam hal apa pun.
Inilah yang saya kumpulkan sejauh ini (Dan saya sudah mencoba membuat daftar ini seimbang mungkin ...):
- Mendorong
- Pro
- Sangat ramah IDE, karena kode aktual dihasilkan, alih-alih mengandalkan metode ajaib PHP. Ini berarti fitur IDE seperti penyelesaian kode benar-benar bermanfaat.
- Cepat (Dalam hal penggunaan basis data - tidak ada introspeksi runtime yang dilakukan pada basis data)
- Bersihkan migrasi antar versi skema (setidaknya dalam 1,6 beta)
- Dapat menghasilkan model PHP 5.3 (yaitu namespaces)
- Mudah untuk mengaitkan banyak hal menjadi satu permintaan basis data tunggal dengan hal-hal seperti
useXxx
metode. (Lihat video "penyelesaian kode" di atas)
- Cons
- Membutuhkan langkah membangun ekstra, yaitu membangun kelas model.
- Kode yang dihasilkan perlu dibangun kembali setiap kali versi Propel diubah, pengaturan diubah, atau skema berubah.
Ini mungkin tidak intuitif untuk beberapa dan metode khusus yang diterapkan pada model hilang. (Saya pikir?)- Tidak benar; metode kustom tidak hilang karena kelas yang dihasilkan adalah kelas dasar; Propel menyediakan kelas entitas khusus untuk ekstensi. - Beberapa fitur yang bermanfaat (yaitu perilaku versi, migrasi skema) dalam status beta.
- Pro
- Doktrin
- Pro
- Lebih populer
- Doctrine Query Language dapat mengungkapkan hubungan antar data yang berpotensi lebih rumit daripada yang mungkin dengan mudah dengan strategi ActiveRecord Propel.
- Lebih mudah untuk menambahkan perilaku yang dapat digunakan kembali jika dibandingkan dengan Propel.
- Mengomentari berdasarkan DocBlock untuk membangun skema tertanam dalam PHP sebenarnya, bukan file XML yang terpisah.
- Menggunakan PHP 5.3 Ruang nama di mana-mana
- Cons
- Membutuhkan pembelajaran bahasa pemrograman yang sepenuhnya baru (Bahasa Ajaran Ajaran)
- Diimplementasikan dalam hal "metode ajaib" di beberapa tempat, membuat IDE autocomplete tidak berharga.
- Membutuhkan introspeksi basis data dan karenanya sedikit lebih lambat dari Propel secara default; caching dapat menghapus ini tetapi caching menambahkan kompleksitas yang cukup besar.
- Lebih sedikit perilaku termasuk dalam basis kode inti. Beberapa fitur yang disediakan Propel di luar kotak (seperti Nested Set) hanya tersedia melalui ekstensi.
- Freakin 'BESAR :)
- Pro
Ini saya dapatkan hanya melalui membaca dokumentasi yang tersedia untuk kedua alat - saya belum benar-benar membangun apa pun.
Saya ingin mendengar dari mereka yang telah menggunakan kedua alat, untuk berbagi pengalaman mereka tentang pro / kontra dari setiap perpustakaan, dan apa rekomendasi mereka pada saat ini :)