Đây có lẽ không phải là câu trả lời chính xác mà bạn đang tìm kiếm, nhưng tôi không thể tưởng tượng nhiều người đang phát triển các tiện ích mở rộng cho các phiên bản cũ hơn .
Chỉ cần nâng cấp, dù sao nó cũng không thể tránh khỏi
Giải pháp rõ ràng là cho khách hàng 1.5 nâng cấp lên 1.7 ( 1.5 dù sao cũng là một bản phát hành bị phá vỡ khủng khiếp ).
Nhưng nếu bạn phải
Nếu chúng ta phải giải quyết nó, đó sẽ chỉ là một trường hợp sao lưu mô-đun bằng một mô-đun nền tảng thứ cấp để sao lưu chức năng cốt lõi mà bạn yêu cầu. Sau đó, khi đến lúc nâng cấp, mô-đun phụ thuộc chỉ có thể bị xóa / xóa.
Nhược điểm là bạn có khả năng cuối cùng sẽ ghi đè các lớp trừu tượng chỉ để thêm / sửa đổi một hàm duy nhất. Thời gian đầu tư vào việc này có thể ngang bằng với việc nâng cấp cửa hàng để bắt đầu.
Về mặt làm cho các phần mở rộng tương thích ngược - có vẻ như là một thực tiễn kỳ lạ - khi bạn đang thỏa hiệp cho các bản phát hành mới hơn. Các tiện ích mở rộng có xu hướng già đi một cách tự nhiên, do đó thay vào đó là tương thích ngược; bạn phát triển dựa trên nó để làm cho nó chuyển tiếp tương thích.
Nếu bạn đã từng xem mã nguồn của các mô-đun bên thứ 3; chúng có xu hướng chứa đầy các Mage::getVersion()
cuộc gọi và câu lệnh có điều kiện - tất cả đều tương thích với nhiều phiên bản. Nó lộn xộn và nên tránh. Trong thực tế - bạn nên có các phiên bản tiện ích mở rộng khác nhau, cho các phiên bản Magento khác nhau. Mặt khác, bạn sẽ phải đối mặt với việc hỗ trợ một tiện ích mở rộng có độ lệch trong phương thức lớp và số lượng câu lệnh điều kiện ngày càng tăng.
Mặc dù đây là một ví dụ tốt về lý do tại sao không
Tôi hiểu logic của bạn. Nhưng những gì xảy ra trong các trường hợp như nâng cấp 1.4.1
> 1.4.2
và bảng doanh số EAV đã bị loại bỏ. Bất kỳ chức năng mới nào được vận hành trên cơ sở của bảng này đều không thay đổi - vì vậy cố gắng sao lưu cổng này sẽ rắc rối hơn nhiều so với giá trị của nó. Đây có thể là một cực đoan và rõ ràng bạn sẽ thực hiện một cuộc gọi phán xét về việc đầu tư bao nhiêu thời gian.
Phiên bản mới nhất của Magento sẽ mãi mãi là mục tiêu di động và được lựa chọn giữa việc làm cho các mô-đun mới hoạt động với các cửa hàng cũ - hoặc các mô-đun cũ hơn hoạt động với các cửa hàng mới hơn. Tôi biết những gì chúng ta muốn làm. Sự phản đối của các chức năng là chậm và duyên dáng và bạn có nhiều thời gian để làm cho chúng mới hơn.