“约定优于配置”与Magento改造尝试三之routerName加载

简介:

上一章引入了一个自定义的概念叫模块的别名(alias),这章沿用这个概念来处理routerName的加载。

    <modules>
        <Mage_Wishlist>
            <version>1.6.0.0</version>
            <alias>wishlist</alias>
        </Mage_Wishlist>
    </modules>


常见的路由(router)定义如下


        <routers>
            <wishlist>
                <use>standard</use>
                <args>
                    <module>Mage_Wishlist</module>
                    <frontName>wishlist</frontName>
                </args>
            </wishlist>
        </routers>

很自然的发现<frontName>的值wishlist与该模块其它别名都是一致的(不一致的情况下面会讲到),那么这次改造的目的就是,直接用通用的别名来取代这一整段路由配置。

因为路由这个东西很明显存在需要自定义的需求(即前端网页url自定义的需求),所以类似于对布局xml文件的处理,这里的改造方式保留了上面这种人为指定路由的配置方式,在没有人为指定路由时,采用模块的别名作为路由名。(其实“布局xml文件”是否保留自定义配置我觉得可以商榷,但路由的自定义是必须保留的)

需要修改的文件是Mage_Core_Controller_Varien_Router_Standard,详见

https://github.com/walexer/Yli_Coc/blob/master/app/code/local/Mage/Core/Controller/Varien/Router/Standard.php

主要修改的方法是:public function collectRoutes($configArea, $useRouterName)


如上文所言,经过这次修改之后,用户依然可以人为指定路由名,不需要指定的(跟别名一致的),可以删除类似如下的xml片段

        <routers>
            <wishlist>
                <use>standard</use>
                <args>
                    <module>Mage_Wishlist</module>
                    <frontName>wishlist</frontName>
                </args>
            </wishlist>
        </routers>

从实际工作经验来说,有人为指定跟别名不一致的路由名的模块是个别少数,大部分模块都可以省下这一段xml配置了。


好了,请期待下一章!!!

目录
相关文章
|
4月前
|
存储 NoSQL 数据处理
组合和继承怎么集成一个性能较好的项目
组合与继承是面向对象编程的核心概念,前者通过对象间关联实现高效解耦,后者则重用代码以节省空间和内存。组合常用于现代项目,利用代理与依赖注入简化代码管理;而继承简化了子模块对父模块资源的应用,但修改会影响整体。随着分层解耦及微服务架构如SpringCloud的出现,这些技术进一步优化了数据处理效率和服务响应性能,尤其在分布式存储与高并发场景下。同步异步调用、Redis分布式应用等也广泛运用组合与继承,实现代码和内存空间的有效复用。
|
7月前
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
|
Web App开发 缓存 JSON
可以用到项目的优化网站加载速度方案
可以用到项目的优化网站加载速度方案
82 0
|
设计模式 前端开发 Java
如何实现自定义MVC框架(最终版本)
如何实现自定义MVC框架(最终版本)
56 0
|
数据采集 算法 数据可视化
MMdetection框架速成系列 第03部分:简述整体构建细节与模块+训练测试模块流程剖析+深入解析代码模块与核心实现
按照抽象到具体方式,从多个层次进行训练和测试流程深入解析,从最抽象层讲起,到最后核心代码实现,希望帮助大家更容易理解 MMDetection 开源框架整体构建细节
625 0
|
PHP 开发工具 数据库
Yii2 修改框架入口增加配置适应开发生产环境
Yii2 修改框架入口增加配置适应开发生产环境
140 0
Yii2 修改框架入口增加配置适应开发生产环境
|
BI 数据处理 Scala
报表统计_执行框架_旧模块改造 | 学习笔记
快速学习报表统计_执行框架_旧模块改造
127 0
报表统计_执行框架_旧模块改造 | 学习笔记
|
缓存 NoSQL Redis
参照有赞TMC框架原理简单实现多级缓存
项目场景: 有位同事因为缓存被后台删除,导致一堆高并发请求直接怼到DB上,导致数据库cpu 100%
482 0
参照有赞TMC框架原理简单实现多级缓存