Tôi đang cố gắng xây dựng dịch vụ đơn giản để hiển thị các loại trang khác nhau. Khái niệm cơ bản là có một cái gì đó như:Mô hình chiến lược trong Symfony2
$somePageType = new PageType(...);
$this->get('page.service')->render($somePagetype);
... được thiết kế là Strategy pattern. Các loại trang sẽ triển khai giao diện với phương thức render
và page.service
sẽ gọi nó. Vấn đề là tôi muốn sử dụng Doctrine trong các lớp kiểu trang. lựa chọn của tôi là gì đây? Tôi muốn tránh tạo dịch vụ cho từng lớp học này. Điều đó thậm chí có thể? Có thể làm cho chúng nhận biết được container mà không cần dịch vụ không? Có thể, trong tương lai, một số loại trang có thể cần một cái gì đó nhiều hơn chỉ có Doctrine, vì vậy tôi cần phải ghi nhớ điều đó.
Không tốt để vượt qua vùng chứa xung quanh. Nếu đối tượng của anh ta yêu cầu học thuyết, anh ta nên yêu cầu nó bằng cách thêm một tham số trong hàm tạo cho đối tượng doctrine. – meze
@meze tất nhiên, nhưng điều gì sẽ xảy ra nếu mọi chiến lược có các phụ thuộc khác nhau. Đây sẽ là cách duy nhất. Tuy nhiên, cá nhân tôi sẽ xác định tất cả các chiến lược như dịch vụ thực sự. – gilden
và bạn sẽ kiểm tra chiến lược của mình như thế nào? tái sử dụng trong một dự án khác mà không có symfony? – meze