我是Magento的新手,文档,主要是phpDocs,很难导航.例如,
$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($id);
Run Code Online (Sandbox Code Playgroud)
在类Mage_Eav_Model_Entity_Attribute_Set的php文档中, 没有在继承的方法或其他方面提及方法getAttributeSetName(),但这仍然有效.
$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($id);
echo $attributeSet->getAttributeSetName();
Run Code Online (Sandbox Code Playgroud)
所以我想我有几个问题.
我的理论是,有一些继承或设计模式的实施,我不理解,也许有人可以为我阐明这一点.
如果你真的想要炒你的大脑,看看源代码,Mage_Eav_Model_Entity_Attribute_Set并一直追随继承链.您将找不到getAttributeSetName任何地方定义的方法.
从中继承的所有Magento对象都Varien_Object可以在其上设置任意数据成员.试试这个.
$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($id);
$attributeSet->setFooBazBar('Value');
var_dump($attributeSet->getFooBazBar());
var_dump($attributeSet->getData('foo_baz_bar'));
var_dump($attributeSet->setData('foo_baz_bar','New Value'));
var_dump($attributeSet->getFooBazBar());
Run Code Online (Sandbox Code Playgroud)
您还可以使用获取所有数据成员
var_dump($attributeSet->getData());
Run Code Online (Sandbox Code Playgroud)
但要小心转储这些,因为如果有一个数据对象有一个循环引用而你没有使用xDebug之类的东西,那么PHP将试图显示该对象.
Magento将数据属性存储在特殊的_data数组属性中.您可以使用getData和来获取/设置此数组中的值setData.Magento还实现了魔法获取和设置方法,所以当你说出类似的东西时
$object->getFooBazBar();
Run Code Online (Sandbox Code Playgroud)
该方法getFooBazBar转换为data属性foo_baz_bar.然后getData使用此属性调用.让你的头脑变得有点棘手,但一旦你得到它,你将开始看到你可以使用这种模式节省多少时间.
当然,这样做的一个副作用是,不可能通过查看它的类文件来推断任何对象可能具有的数据属性,因此这些方法没有phpDocs.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |