Magento如何创建动态函数?

mun*_*jal 2 php magento

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

$product = Mage::getModel('catalog/product')->load(29);
Run Code Online (Sandbox Code Playgroud)

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

$product->getSkuId()
$product->getProdId()
$product->getName()
Run Code Online (Sandbox Code Playgroud)

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

Sha*_*ngh 5

Magento正在使用__call魔术方法.当您尝试调用该类实际上不存在的方法时,如果您__call在类中定义了方法,__call则调用该方法,并且Magento采用实际请求的方法的名称并调用另一个处理此请求的方法来获取特别适合你.

编辑

所有Model类都继承自Varien_Object类查看 和类似的魔术方法__get,__set__callVarien_Object类中定义,并将由类继承的Varien_Object类使用.你可以在这里找到这个课程/magento_installation_diretctory/lib/Varien/Object.php.

查看Varien_Object类的源代码.