Magento如何创建动态函数?

时间:2011-11-18 10:07:10

标签: php magento

有谁能告诉我Magento如何创建动态函数?例如,对于产品信息,我们称之为:

$product = Mage::getModel('catalog/product')->load(29);

$product->getData()以数组格式返回所有数据。但我们可以从各个函数中获取相同的信息,如:

$product->getSkuId()
$product->getProdId()
$product->getName()

有谁能告诉我Magento如何创建这些动态函数?

2 个答案:

答案 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