我可以覆盖Magento Varien类吗?

时间:2012-04-11 11:40:00

标签: magento

我知道如何覆盖Mage类(app/code/core中的任何类) 我的问题是如何覆盖Varien类? (lib/Varien内的课程)

如果我想覆盖Mage_Adminhtml_Block_Page_Menu 我在MyCompany_Adminhtml_Block_Page_Menu

下创建了一个班级app/code/local/MyCompany/Adminhtml/Block/Page/Menu.php

我把它命名为:

 class MyCompany_Adminhtml_Block_Page_Menu extends Mage_Adminhtml_Block_Page_Menu

现在,Magento使用我的班级MyCompany_Adminhtml_Block_Page_Menu代替Mage_Adminhtml_Block_Page_Menu

我的问题是:我应该在哪里放置新课程以及如何命名,以覆盖,例如Varien_Datelib/Varien/Date.php

由于

1 个答案:

答案 0 :(得分:10)

如果必须,请将文件和路径复制到 local 代码池并进行必要的更改。没有配置映射来更改类名。

说明:请参阅 app / Mage.php 中的bootstrapping。按以下顺序为代码池和库设置加载顺序:

  1. 应用程序/代码/本地/
  2. 应用程序/代码/小区/
  3. 应用程序/代码/核心/
  4. LIB /
  5. 通常,Varien_Autoload负责将类Varien_Data_Collection_DbMage_Core_Model_AbstractZend_Db_Select等类名映射到相对文件名( Varien / Data / Collection / Db。 php Mage / Core / Model / Abstract.php Zend / Db / Select.php 。然后将这些文件位置传递给include(),{{1}}在内部使用引导程序中设置的加载顺序。因此,如果文件 Varien / Data / Collection / Db.php 出现在“之前”某个位置下,则将使用版本的类定义。< / p>

    这些类型的修改可能是合理的,但它们应该经过充分考虑和记录,因为整个定义将归您所有,并且任何升级都需要在将来合并。知道你想要改变什么是很好的,因为其他人可能会有一些侵入性较小的选择。