Doctrine 2 (veya üstü) ve Propel 1.5 (veya üstü) kullananlardan duymak istiyorum. Bu iki nesne ilişkisel haritacısı arasındaki karşılaştırmaların çoğu eski sürümlere dayanıyor - Doktrin 1 - Propel 1.3 / 1.4 ve her iki ORM de son revizyonlarında önemli yeniden tasarımlardan geçti. Örneğin, Propel eleştirisinin çoğu, her durumda 1.5'te itiraz edilen "ModelName Peer " sınıfları etrafında toplanmış görünüyor .
İşte şimdiye kadar biriktirdiklerim (Bu listeyi olabildiğince dengeli hale getirmeye çalıştım ...):
- uskur
- Artıları
- Son derece IDE dostu, çünkü PHP sihirli yöntemlerine güvenmek yerine gerçek kod üretildi. Bu, kod tamamlama gibi IDE özelliklerinin aslında yardımcı olduğu anlamına gelir .
- Hızlı (Veritabanı kullanımı açısından - veritabanında çalışma zamanı incelemesi yapılmaz)
- Şema sürümleri arasında temiz geçiş (en azından 1.6 beta'da)
- PHP 5.3 modelleri üretebilir (yani ad alanları)
- Tek bir veritabanı sorgusu içinde birçok şeyi zincirleme
useXxx
yöntemlerle kolaylaştırmak kolaydır . (Yukarıdaki "kod tamamlama" videosuna bakın)
- Eksileri
- Model sınıflarını inşa etmek için ekstra bir yapım adımı gerektirir.
- Propel sürümü ne zaman değiştirilirse, bir ayar değiştirildiğinde veya şema değiştiğinde oluşturulan kodun yeniden oluşturulması gerekir.
Bu, bazılarına karşı sezgisel olmayabilir ve modele uygulanan özel yöntemler kaybolur. (Bence?)- Doğru değil; Oluşturulan sınıf bir temel sınıf olduğu için özel yöntemler kaybolmaz; Propel, özellikle uzatma için bir varlık sınıfı sağlar. - Bazı yararlı özellikler (örneğin sürüm davranışı, şema geçişleri) beta durumundadır.
- Artıları
- doktrin
- Artıları
- Daha popüler
- Doktrin Sorgu Dili, Propel'in ActiveRecord stratejisi ile veriler arasında olası olandan daha karmaşık ilişkileri ifade edebilir.
- Propel ile karşılaştırıldığında tekrar kullanılabilir davranışlar eklemek daha kolaydır.
- Şema oluşturmak için DocBlock tabanlı yorum, ayrı bir XML dosyası yerine gerçek PHP'ye gömülüdür.
- Her yerde PHP 5.3 Ad Alanları kullanır
- Eksileri
- Tamamen yeni bir programlama dili öğrenmeyi gerektirir (Doctrine Query Language)
- IDE'yi otomatik olarak tamamlayarak değersiz kılan birçok yerde "sihirli yöntemler" olarak uygulanmıştır.
- Veri tabanı incelemesi gerektirir ve bu nedenle varsayılan olarak Propel'den biraz daha yavaştır; önbellekleme bunu kaldırabilir, ancak önbellekleme oldukça karmaşıklık sağlar.
- Çekirdek kod tabanında daha az davranış vardır. Propel'in kutudan sağladığı çeşitli özellikler (Yuvalanmış Set gibi) yalnızca uzantılar aracılığıyla kullanılabilir.
- Freakin 'BÜYÜK :)
- Artıları
Bu, ancak her iki araç için mevcut olan belgeleri okuyarak bile yalvardım - Aslında henüz bir şey yapmadım.
Her iki aracı da kullananlardan duymak, her kütüphanenin artıları / eksileri konusundaki deneyimlerini paylaşmak ve tavsiyelerinin bu noktada ne olduğunu bilmek istiyorum :)