Vấn đề đã được biết rõ: lib
các lớp được tải độc quyền thông qua trình tải tự động và chúng tôi không thể thay đổi chúng ngoài:
- Sao chép chúng hoàn toàn vào một mãPool được kiểm tra sớm hơn lib.
- Cài đặt trình tải tự động PSR-0 , chỉ định sơ đồ lớp tự động tải, sau đó sao chép toàn bộ tệp vào cấu trúc thư mục đó. [giải pháp hiện tại của tôi]
Tôi đang ở một vị trí khó khăn vì tôi muốn có khả năng chạm vào nhiều tệp này - nhưng vì sự tỉnh táo và tính ổn định / khả năng nâng cấp của cửa hàng, tôi không muốn sao chép toàn bộ các lớp thư viện.
Bây giờ rõ ràng có những giải pháp tiềm năng cho vấn đề này, nhưng tất cả chúng đều đi kèm với một loạt vấn đề của riêng họ:
- Đi theo lộ trình AOP và sử dụng thư viện dựa trên PHP như Go! AOP : Lần cuối tôi kiểm tra điều này sẽ yêu cầu các lớp Magento được tải bởi trình tải tự động của nhà soạn nhạc, không chỉ một lớp có sẵn. Flyingmana đã thực hiện một số công việc trong lĩnh vực này nhưng nó chắc chắn chưa sẵn sàng cho việc sử dụng sản xuất và nhu cầu của tôi ngay lập tức hơn. Tôi cũng muốn gửi như một phần mở rộng, và điều đó sẽ đòi hỏi nhiều thiết lập nhà soạn nhạc hơn.
- Đi theo lộ trình AOP và sử dụng một phần mở rộng PHP gốc : Có lẽ là thuận lợi nhất vào thời điểm này, nhưng nó sẽ yêu cầu cài đặt một phần mở rộng riêng, chưa kể rằng nó sẽ không hoạt động với HHVM.
- Sử dụng classkit và / hoặc runkit của PHP: Đó là một phần mở rộng PHP gốc khác nên nó có cùng một vấn đề như trên.
- Trang web cuộc gọi vá để sử dụng
\Danslo\Varien_X
phiên bản tên ( ) của riêng tôi , sau đó mở rộng từ phiên bản gốc (\Varien_X
): Có quá nhiều cuộc gọi để vá và nó sẽ yêu cầu số lượng ghi lại ngớ ngẩn. Không phải là một lựa chọn. Cuộn của riêng tôi: Nó sẽ có thể:
- Viết trình tải tự động của riêng tôi.
- Sao chép lớp gốc vào một thư mục riêng (
{root_dir}/var/tmp
), bọc nó vàonamespace \Magento { < original contents > }
. - Bao gồm tập tin đó.
- Bao gồm lớp sửa đổi của tôi
OriginalClass extends Magento\OriginalClass {}
Nhược điểm của điều này là rõ ràng: tạo mã động, regex, một ít chi phí để tải các lớp viết lại. Nhưng tôi gần như chắc chắn rằng tại thời điểm này, nó sẽ đánh bại việc sao chép ~ 5000 dòng mã khi tôi chỉ muốn chạm / thêm ~ 100 dòng.
Tôi biết tôi đang hỏi rất nhiều, nhưng có một cái gì đó hiện đại và tương đối sạch sẽ giúp giải quyết vấn đề này?