我已经使用 magento 有一段时间了,总是无法在使用魔法 getter 和 getData() 之间做出决定
除了轻微的性能开销(而且必须非常轻微)之外,有人可以解释主要区别吗?
我在思考:
基于核心代码没有明确的方法,因为它使用了两者的混合
最佳答案
没有适合所有情况的答案,最好根据您使用的模型和特定用例来决定。
魔术方法的性能非常差,以及在每个访问器上从 CamelCase 转换为 under_score 的额外开销。
无论如何,魔术方法基本上是 getData() 的包装器,具有额外的开销。
但是,使用魔术方法有一个优点,例如:
如果您使用 getAttributeName() 而不是 getData('attribute_name')
在 future 的某个时候,模型可能会更新以包含一个真实的、具体的 getAttributeName() 方法,在这种情况下,您的代码仍然可以正常工作。但是,如果您使用了 getData(),则可以直接访问该属性,并绕过新方法,其中可能包括您要绕过的一些重要计算。
关于Magento,魔术 setter/getter v getData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14440424/