谁能告诉我Magento是如何创建动态函数的?例如,对于产品信息,我们调用:
$product = Mage::getModel('catalog/product')->load(29);
$product->getData()
以数组格式返回所有数据。但是我们可以从单个函数中获取相同的信息,例如:
$product->getSkuId()
$product->getProdId()
$product->getName()
谁能告诉我Magento是如何创建这些动态函数的?
Magento正在使用__call魔术方法。当你试图调用一个方法,而这个方法在那个类中并不存在,如果你在你的类中定义了__call
方法,__call
方法被调用,Magento取实际请求的方法的名字,并调用另一个方法来处理这个请求,为你获取特定的东西。
编辑
所有的模型类都继承自Varien_Object
类(见图),__get
、__set
和__call
等神奇方法在Varien_Object
类中定义,并将由Varien_Object
类继承的类使用。你可以在/magento_installation_diretctory/lib/Varien/Object.php
找到这个类。
查看Varien_Object类的源代码
可能通过使用__call