浏览Magento文档时遇到问题

时间:2012-10-07 16:27:03

标签: magento phpdoc

我是Magento的新手,文档(主要是phpDocs)很难导航。例如,

$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($id);

Class Mage_Eav_Model_Entity_Attribute_Set的php文档中,没有在继承的方法或其他方面提及方法getAttributeSetName(),但这仍然有用。

$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($id);
echo $attributeSet->getAttributeSetName();

所以我想我有几个问题。

  1. 有人可以向我解释为什么文档是这样的吗?
  2. 我在哪里可以找到phpDocs中神秘的getAttributeSetName()方法?
  3. 我的理论是有一些继承或设计模式的实施,我不理解,也许有人可以为我阐明这一点。

1 个答案:

答案 0 :(得分:6)

如果你真的想要炒你的大脑,请查看Mage_Eav_Model_Entity_Attribute_Set的源代码并一直遵循继承链。您不会在任何地方找到getAttributeSetName方法。

Varien_Object继承的所有Magento对象都可以在其上设置任意数据成员。试试这个。

$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());

您还可以使用

获取所有数据成员
var_dump($attributeSet->getData());

但要小心转储这些,因为如果有一个数据对象有一个循环引用而你没有使用像xDebug这样的东西,那么PHP将试图显示该对象。

Magento将数据属性存储在特殊的_data数组属性中。您可以使用getDatasetData在此数组中获取/设置值。 Magento还实现了魔法获取和设置方法,所以当你说出像

这样的东西时
$object->getFooBazBar();

方法getFooBazBar将转换为数据属性foo_baz_bar。然后使用此属性调用getData。让你的头脑变得有点棘手,但是一旦你得到它,你将开始看到你可以使用这种模式节省多少时间。

这样做的一个副作用当然是,通过查看它的类文件来推断任何对象可能具有的数据属性是不可能的,因此这些方法没有phpDocs。