1

我正在研究一些 Magento 代码。

我在看课Mage_Catalog_Model_Session

Mage_Catalog_Block_Product_List_Toolbar extends Mage_Core_Block_Template函数中有getCurrentOrder这样的代码:

Mage::getSingleton('目录/会话')->getSortOrder();

现在,Mage::getSingleton('catalog/session')返回一个类型的对象Mage_Catalog_Model_Session

所以我认为这getSortOrder()是该类的一种方法,尽管该方法似乎与该工具栏类而不是该会话类一起使用。

这一行应该给我类的方法列表:

print_r(get_class_methods(get_class($_test)));

它似乎确实存在,但未getSortOrder()列出。

那么,哪个类是getSortOrder()其成员以及它是如何 A.) 似乎是它不是其成员的类的成员,或 B.) 是该类的成员但未出现在get_class_methods()结果集中?

4

1 回答 1

2

听起来像是getSortOrder()一个重载的方法。有关重载的更多信息,请参见此处。取自链接:

Overloading in PHP provides means to dynamically "create" properties and methods.

get_class_methods()不会显示重载的方法,因为它们是在调用时在现场创建的(因此无法知道它们。)许多框架使用重载的 getter。

顺便说一句,有关如何实现 getter 重载的示例,请参见此答案。

于 2013-03-22T23:31:35.217 回答