“约定优于配置”与Magento改造尝试一之语言包加载
2016-01-05 14:44
239 查看
上一篇文章(“约定优于配置”与Magento)讲到,Magento的模块结构运用了大量的xml内容来做配置,其中有一些其实是可以用约定来代替的。从本篇文章开始我会尝试对Magento从底层做一些改造,来让系统支持按照约定而不需要实际配置来加载一些东西。
第一步先挑简单的来,原始情况下,一个模块对语言包(csv)的加载是通过如下方式配置指定的
之前有提到,Magento的潜规则是语言包文件名Mage_Wishlist.csv与模块名Mage_Wishlist都是一致的(除去后缀),那么我这里就尝试针对这个改造成不再需要再通过上面这样一组xml来认为指定加载哪个文件,直接使用模块名。
需要动的文件是Mage_Core_Model_Translate,我放到了github上,地址如下:
https://github.com/walexer/Yli_Coc/blob/master/app/code/local/Mage/Core/Model/Translate.php
具体的话修改了三个方法,分别是
经过这样的修改之后,所有的类似下面这种配置就可以不需要了(写了也没用)
理论上这样修改后的缺点是丧失了这部分的自由度,之前允许人为指定语言csv文件的文件名就是故意和模块名不一样(多拧巴),修改之后的语言csv文件命名必须和模块名(比如Mage_Wishlist)一致,否则系统会读不到语言文件。我个人人为这种自由度是可以抛弃下的。
如果有哪个第三方插件真的故意设置文件名和模块名不一致的话,要应用这个修改记得改下语言包的文件名。
理论上把系统所有模块的<translate>类配置都删掉的话,对整个系统加载时加载的xml内容量会有一点瘦身的效果,具体我还没测试过,准备等更多配置被约定取代之后再整体测试下性能如何。另外,上面对Mage_Core_Model_Translate的修改只是先实现了用约定来取代部分配置的功能,可能写法上并不是性能最优的,以后再陆续改进性能(如果需要的话)。
语言包部分的配置是改造的第一步,接下来我会继续尝试上篇文章提到的其它可供改造的内容,敬请期待!!
第一步先挑简单的来,原始情况下,一个模块对语言包(csv)的加载是通过如下方式配置指定的
<translate> <modules> <Mage_Wishlist> <files> <default>Mage_Wishlist.csv</default> </files> </Mage_Wishlist> </modules> </translate>
之前有提到,Magento的潜规则是语言包文件名Mage_Wishlist.csv与模块名Mage_Wishlist都是一致的(除去后缀),那么我这里就尝试针对这个改造成不再需要再通过上面这样一组xml来认为指定加载哪个文件,直接使用模块名。
需要动的文件是Mage_Core_Model_Translate,我放到了github上,地址如下:
https://github.com/walexer/Yli_Coc/blob/master/app/code/local/Mage/Core/Model/Translate.php
具体的话修改了三个方法,分别是
public function init($area, $forceReload = false) public function getModulesConfig() protected function _loadModuleTranslation
经过这样的修改之后,所有的类似下面这种配置就可以不需要了(写了也没用)
<translate> <modules> <Mage_Wishlist> <files> <default>Mage_Wishlist.csv</default> </files> </Mage_Wishlist> </modules> </translate>
理论上这样修改后的缺点是丧失了这部分的自由度,之前允许人为指定语言csv文件的文件名就是故意和模块名不一样(多拧巴),修改之后的语言csv文件命名必须和模块名(比如Mage_Wishlist)一致,否则系统会读不到语言文件。我个人人为这种自由度是可以抛弃下的。
如果有哪个第三方插件真的故意设置文件名和模块名不一致的话,要应用这个修改记得改下语言包的文件名。
理论上把系统所有模块的<translate>类配置都删掉的话,对整个系统加载时加载的xml内容量会有一点瘦身的效果,具体我还没测试过,准备等更多配置被约定取代之后再整体测试下性能如何。另外,上面对Mage_Core_Model_Translate的修改只是先实现了用约定来取代部分配置的功能,可能写法上并不是性能最优的,以后再陆续改进性能(如果需要的话)。
语言包部分的配置是改造的第一步,接下来我会继续尝试上篇文章提到的其它可供改造的内容,敬请期待!!
相关文章推荐
- Android开发中应该避免的内存泄露
- Photos(PHCollection)
- js截取文件的名称
- 编译安装cmake
- zabbix中文配置指南之升级操作
- python多线程中互斥锁Threading.Lock的简单应用
- DB2只针对单一的应用/EDU收集trace.
- nutch
- ftok冲突
- 一步一步学solr--windows下solr5.4.0环境搭建
- Android内存泄漏定位与解决
- Extjs 4 Grid 嵌套
- 可以解决RadioGroup中两个RadioButton选中以及RadioButton回行布局的RadioGroup
- nutch
- 也谈阻塞、非阻塞、同步、异步
- LeetCode - Binary Tree Inorder Traversal
- java加密解密和编码转换
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
- 数据库连接池性能比对
- 关于ios的ipa包的分析之link map 文件的分析