magento1.4 -- 从新闻插件看出Magento开启预编译后对代码的要求更加严格规范

       Scalena News这个新闻插件我用了很久了,在1.3时代使用中一直没出问题,就也没有去检查它的代码是否都是准确的。因为1.4的预编译(Compilation)功能已经成熟,我在1.4安装完Scalena News后开启了编译,这时访问后台新闻管理菜单会报错,提示Mage_Adminhtml_Controller_action这个类没找到,检查插件的Scalena_News_Adminhtml_NewsController这个文件后发现Mage_Adminhtml_Controller_action里的action应该是大写Action

 

   class Scalena_News_Adminhtml_NewsController extends Mage_Adminhtml_Controller_action { protected function _initAction() { ………………………………………… 

 

也就是说应该是class Scalena_News_Adminhtml_NewsController extends Mage_Adminhtml_Controller_Action,修改之后重新运行编译后不再报错。而即使不修改,只要关闭编译,同样不会报错。

        从这里可以看出,未开编译前Magento对代码的规范并没有那么严格,甚至可以猜想在1.3时代有不少插件里或者系统代码有类似的不规范代码因为不影响使用而没被发现,但到了1.4时代,如果想要正常使用预编译(Compilation)来提速,更规范的代码编写是必不可少了。我的建议是从一开始开发局开启预编译(Compilation),当然每次新装插件或新写了自己的模块时要重新运行编译,这样每次发现有报错可以及时的修改掉,如果一直没开编译,到项目全部做完在开启,那时候可能会有一大把错误等着你去改,甚至混在一起无从下手。当然这是我根据目前的知识所作的推测。

之前好像有看到过一篇英文文章说,要开启预编译会要求所有的功能编写按照Magento的标准模块编写方式,跳出框架自己写代码实现的功能有可能无法编译,甚至报错到无法使用编译功能,比如在一个phtml文件中自己写php代码直接读取数据库等等。这一点我还未证实过,不过我觉得既然使用了Magento这个框架,按照Magento的规则去写代码还是有必要的,方便了自己也方便了别人看懂你的代码,当然这就要求开发者需要更深入的了解magento自身的框架。

还有一个细节,在windows系统中开启编译,新闻管理是不会报错的,因为windows系统文件和文件夹不区分大小写,而一个Magento项目最终肯定是要在Linux的服务器上运行,所以一个建议是本地开发也搭建一个Linux环境做开发,才不会发生从windows转移到linux是发现一堆大小写带来的错误。

你可能感兴趣的:(windows,框架,linux,action,Magento,compilation)