有谁能告诉我Magento如何创建动态函数?例如,对于产品信息,我们称之为:
$product = Mage::getModel('catalog/product')->load(29);
$product->getData()
以数组格式返回所有数据。但我们可以从各个函数中获取相同的信息,如:
$product->getSkuId()
$product->getProdId()
$product->getName()
有谁能告诉我Magento如何创建这些动态函数?
答案 0 :(得分:5)
Magento正在使用__call魔法。当您尝试调用该类实际上不存在的方法时,如果您在类中定义了__call
方法,则调用__call
方法,并且Magento采用实际请求的方法的名称,调用处理此请求的另一个方法来为您获取特定的东西。
修改强>
所有Model类都继承自Varien_Object
类,请参阅diagram,此处定义了__get
,__set
和__call
等神奇方法。 Varien_Object
类,将由Varien_Object
类继承的类使用。您可以在/magento_installation_diretctory/lib/Varien/Object.php
找到此课程。
查看Varien_Object类的源代码。
答案 1 :(得分:1)
可能使用__call