Tôi muốn nghe từ những người đã sử dụng Học thuyết 2 (hoặc mới hơn) và Propel 1.5 (hoặc mới hơn). Hầu hết các so sánh giữa hai trình ánh xạ quan hệ đối tượng này đều dựa trên các phiên bản cũ - Học thuyết 1 so với Propel 1.3 / 1.4 và cả hai ORM đều trải qua các thiết kế lại đáng kể trong các phiên bản gần đây. Ví dụ, hầu hết những lời chỉ trích về Propel dường như tập trung vào các lớp "ModelName Peer ", không được chấp nhận trong 1,5 trong mọi trường hợp.
Đây là những gì tôi đã tích lũy được cho đến nay (Và tôi đã cố gắng làm cho danh sách này cân bằng nhất có thể ...):
- Tuyên truyền
- Ưu
- Cực kỳ thân thiện với IDE, bởi vì mã thực tế được tạo ra, thay vì dựa vào các phương thức ma thuật PHP. Điều này có nghĩa là các tính năng IDE như hoàn thành mã thực sự hữu ích.
- Nhanh (Về mặt sử dụng cơ sở dữ liệu - không có nội quan thời gian chạy nào được thực hiện trên cơ sở dữ liệu)
- Di chuyển sạch giữa các phiên bản lược đồ (ít nhất là trong bản 1.6 beta)
- Có thể tạo các mô hình PHP 5.3 (tức là không gian tên)
- Dễ dàng xâu chuỗi nhiều thứ vào một truy vấn cơ sở dữ liệu duy nhất với những thứ như
useXxx
phương thức. (Xem video "hoàn thành mã" ở trên)
- Nhược điểm
- Yêu cầu một bước xây dựng bổ sung, cụ thể là xây dựng các lớp mô hình.
- Mã được tạo cần được xây dựng lại bất cứ khi nào phiên bản Propel được thay đổi, cài đặt được thay đổi hoặc lược đồ thay đổi.
Điều này có thể không trực quan đối với một số và các phương thức tùy chỉnh áp dụng cho mô hình bị mất. (Tôi nghĩ sao?)- Không đúng; các phương thức tùy chỉnh không bị mất vì lớp được tạo là lớp cơ sở; Propel cung cấp một lớp thực thể đặc biệt để mở rộng. - Một số tính năng hữu ích (nghĩa là hành vi phiên bản, di chuyển lược đồ) đang ở trạng thái beta.
- Ưu
- Học thuyết
- Ưu
- Phổ biến hơn
- Ngôn ngữ truy vấn của Doctrine có thể diễn tả các mối quan hệ phức tạp hơn giữa các dữ liệu dễ dàng hơn với chiến lược ActiveRecord của Propel.
- Dễ dàng hơn để thêm các hành vi có thể sử dụng lại khi so sánh với Propel.
- Nhận xét dựa trên DocBlock để xây dựng lược đồ được nhúng trong PHP thực tế thay vì một tệp XML riêng biệt.
- Sử dụng không gian tên PHP 5.3 ở mọi nơi
- Nhược điểm
- Yêu cầu học một ngôn ngữ lập trình hoàn toàn mới (Ngôn ngữ truy vấn học thuyết)
- Được triển khai dưới dạng "phương pháp ma thuật" ở một số nơi, làm cho IDE tự động hoàn thành không có giá trị.
- Yêu cầu nội quan cơ sở dữ liệu và do đó chậm hơn một chút so với Propel theo mặc định; bộ nhớ đệm có thể loại bỏ điều này nhưng bộ nhớ đệm thêm phức tạp đáng kể.
- Ít hành vi hơn được bao gồm trong cơ sở mã cơ sở. Một số tính năng mà Propel cung cấp ngoài hộp (chẳng hạn như Bộ lồng nhau) chỉ khả dụng thông qua các tiện ích mở rộng.
- Freakin 'LỚN :)
- Ưu
Điều này tôi đã lượm lặt được mặc dù chỉ thông qua việc đọc tài liệu có sẵn cho cả hai công cụ - tôi chưa thực sự xây dựng bất cứ thứ gì.
Tôi muốn nghe từ những người đã sử dụng cả hai công cụ, để chia sẻ kinh nghiệm của họ về ưu / nhược điểm của mỗi thư viện và đề xuất của họ là gì vào thời điểm này :)