Magic getters trên Varien_Object
(M1) và DataObject
(M2) là cách làm phổ biến, nhưng với Magento 2, việc sử dụng nó là sai.
Tốt
- dễ đọc / viết
Xấu
- Nó gây ra sự cố khi sử dụng các chữ số trong các khóa (xem: Magento 2: cách lấy trường khác nhau của bộ sưu tập hoặc Nhận thuộc tính Sản phẩm tùy chỉnh bằng cách sử dụng vỏ lạc đà )
- các công cụ phân tích mã phàn nàn về các phương thức không tồn tại
Câu hỏi
Với Magento 2, chúng tôi có hai phương pháp mới:
getDataByKey($key)
getDataByPath($path)
Có bất kỳ lý do tốt để vẫn sử dụng getData($key)
hoặc bất kỳ getters ma thuật?
Chỉnh sửa:
@Vinai cảm ơn. Tôi không đề cập đến @method
phương pháp này, vì cách tiếp cận của tôi khá khác biệt.
Nó chỉ giúp IDE, nhưng không có tác động đến những thứ khác.
Có một số PR được hợp nhất trên đó là "tối ưu hóa vi mô" như truyền (int)
thay vì intval()
hoặc lấy kích thước mảng bên ngoài các vòng lặp (ngay cả đối với các mảng nhỏ).
Mặt khác có
ma thuật, có một số "chi phí" như Marius đã mô tả ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
mehtods cũng phải kiểm tra thêm 2-3 ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
Đối với mã riêng, hoàn toàn đồng ý thích các phương thức thực, nhưng trong trường hợp tương tự, không thể ... ví dụ: bạn đã tạo một sự kiện tùy chỉnh ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
Sử dụng thứ 3 với /** @var some $value */
dường như tốt nhất với tôi. (?)