我可以覆盖Magento Varien类吗?

ily*_*oli 1 magento

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

如果我要重写Mage_Adminhtml_Block_Page_Menu 我创建一个类MyCompany_Adminhtml_Block_Page_Menuapp/code/local/MyCompany/Adminhtml/Block/Page/Menu.php

我把它命名为:

 class MyCompany_Adminhtml_Block_Page_Menu extends Mage_Adminhtml_Block_Page_Menu
Run Code Online (Sandbox Code Playgroud)

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

我的问题是:我应该在哪里放置新类,以及如何命名,以覆盖,例如 Varien_Date(lib/Varien/Date.php)

谢谢

ben*_*rks 10

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

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

  1. 应用程序/代码/本地/
  2. 应用程序/代码/社区/
  3. 应用程序/代码/核心/
  4. LIB /

典型地,Varien_Autoload负责映射类名如Varien_Data_Collection_Db,Mage_Core_Model_AbstractZend_Db_Select相对于文件名(瓦瑞恩/数据/收集/ db.php中,法师/核心/型号/ Abstract.php,和的Zend/DB/Select.php分别地).然后传递这些文件位置include(),在内部使用引导程序中设置的加载顺序.因此,如果文件Varien/Data/Collection/Db.php存在于"之前"位置之一下,则将使用版本的类定义.

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