我正在研究一些Magento代码。
我正在看类Mage_Catalog_Model_Session
在Mage_Catalog_Block_Product_List_Toolbar extends Mage_Core_Block_Template
类函数getCurrentOrder
中有如下代码:
法师: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()
的结果集中?
听起来像getSortOrder()
是一个重载方法。有关重载的更多信息,请参阅此处。摘自链接:
Overloading in PHP provides means to dynamically "create" properties and methods.
get_class_methods()
不会显示重载方法,因为它们是在调用时当场创建的(因此没有办法知道它们)。很多框架对getter使用重载。