Сборщики магии на Varien_Object
(M1) и DataObject
(M2) являются обычной практикой, но с Magento 2 кажется неправильным использовать его.
Хорошо:
- легко читать / писать
Плохо
- Это вызывает проблемы при использовании цифр в ключах (см .: Magento 2: другой способ получить поле коллекции или атрибут Get Get Product с использованием верблюда )
- инструменты анализа кода жалуются на несуществующие методы
Вопрос
С Magento 2 у нас есть два новых метода:
getDataByKey($key)
getDataByPath($path)
Есть ли веская причина, чтобы все еще использовать getData($key)
или какие-нибудь магические добытчики?
Редактировать:
@ Винай спасибо. Я не упомянул @method
метод, потому что мой подход был совсем другим.
Это только помогает IDE, но не влияет на другие вещи.
Существует несколько PR mergedf, которые являются «микрооптимизациями», такими как приведение (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');
Использование 3-го с /** @var some $value */
мне кажется лучшим. (?)