Чарівні геть на Varien_Object
(M1) та DataObject
(M2) - звичайна практика, але в Magento 2 використовувати його неправильно.
Добре:
- легко читати / писати
Поганий
- Це спричиняє проблеми під час використання цифр у клавішах (див. Magento 2: іншим способом отримати поле колекції або Отримати атрибути на замовлення товару за допомогою корпусу верблюда )
- засоби аналізу коду скаржаться на неіснуючі методи
Питання
У Magento 2 у нас є два нові методи:
getDataByKey($key)
getDataByPath($path)
Чи є якісь вагомі причини все-таки використовувати getData($key)
чи будь-які магічні геть?
Редагувати:
@Vinai спасибі Я не згадував @method
метод, тому що мій підхід був зовсім іншим.
Він лише допомагає IDE, але не впливає на інші речі.
На цьому є кілька PR-об'єднанихf, які є "мікрооптимізаціями", такими як кастинг (int)
замість intval()
або отримання розміру масиву зовнішніх циклів (навіть для невеликих масивів).
З іншого боку є
магічні геттери, які мають деякі "накладні витрати", як описав Маріус ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
Мехтоди також мають 2-3 додаткові перевірки ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
Для власного коду цілком погоджуються віддавати перевагу реальним методам, але в тих же випадках це неможливо ... наприклад, ви створили власну подію ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
Використання 3rd з /** @var some $value */
мені здається найкращим. (?)