Varien_Object
(M1)和DataObject
(M2)上的魔术吸气剂是常见的做法,但是使用Magento 2时,使用它会感到错误。
好:
- 容易读/写
坏
- 在键中使用数字时会引起问题(请参阅:Magento 2:使用驼峰式大小写的不同方式获取集合的字段或获取自定义产品属性)
- 代码分析工具抱怨不存在的方法
题
使用Magento 2,我们有两种新方法:
getDataByKey($key)
getDataByPath($path)
是否有充分的理由继续使用getData($key)
或使用任何吸气剂?
编辑:
@Vinai谢谢。我没有提及该@method
方法,因为我的方法大不相同。
它仅对IDE有帮助,对其他方面没有影响。
有几个mergedf PR是“微优化”的,例如在循环外(甚至对于小型阵列)强制转换为数组大小或(int)
替代intval()
数组大小。
另一方面,有
神奇的吸气剂,正如马吕斯(Marius)所说的那样有些“开销”。
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
Mehtods还必须额外进行2-3次检查...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
对于自己的代码,完全同意倾向于使用实际方法,但是在相同情况下,这是不可能的...例如,您创建了一个自定义事件...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
/** @var some $value */
对我来说,最好使用3rd 。(?)