【问题标题】:Converting a Brownfield PHP Webapp to Zend Framework将 Brownfield PHP Webapp 转换为 Zend 框架
【发布时间】:2012-05-04 15:18:51
【问题描述】:

我们正在考虑将我们的 PHP Web 应用程序从不使用框架(这对我们来说是致命的)转换为使用 Zend 框架。由于应用程序的大小,我认为从头开始不会成为管理的可行选择,因此我想开始研究如何使用 Zend Framework 慢慢地从当前站点结构转换为一个,但没有很多关于这个过程的信息。

到目前为止,我的计划是将当前代码库转储到 Zend 应用程序的 public/ 目录中,修复我确信这会突然出现的许多问题,然后开始一次重写一个模块。

过去有没有人有过这样做的经验,对您来说效果如何?

【问题讨论】:

    标签: zend-framework brownfield


    【解决方案1】:

    我现在已经完成了其中的一些。最适合我的是将 ZF 放在旧应用程序周围,因此所有请求都通过 ZF。然后我有一个“旧版”控制器插件,它检查 ZF 是否可以满足请求,如果不能满足,则将其发送到旧应用程序:

    class Yourapp_Plugin_Legacy extends Zend_Controller_Plugin_Abstract
    {
        public function preDispatch(Zend_Controller_Request_Abstract $request)
        {
            $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
            if (!$dispatcher->isDispatchable($request)) {
                // send to the old code...
            }
        }
    }
    

    您如何将请求发送到您的旧应用程序在一定程度上取决于它是如何实现的。在一个项目中,我检查了请求,从旧代码中确定请求将转到哪个文件,然后要求输入。听起来这可能适合您。在另一个项目中,我的解决方案是将所有这些请求路由到 ZF 项目中的 LegacyController,它运行旧代码以获取生成的 HTML,然后在新项目的 Zend_Layout 中呈现它。

    这种方法的优点是您可以在重写旧应用程序的部分内容时逐渐引入 ZF 模块,直到达到 ZF 可以处理 100% 的请求的程度。此外,由于 ZF 项目在您的旧代码运行之前已初始化,因此您的旧代码可以使用 ZF 自动加载器,因此您可以开始用更 ZF 样式编写的模型替换旧代码中的类,并让两者都使用它们应用程序的一部分。

    【讨论】:

    • +1 另请参阅chrisabernethy.com/zend-framework-legacy-scripts。其中详细介绍了类似的方法。特别是,请注意 Andrew 的反对意见,即迁移可以像将 ZF .htaccess 规则附加到现有的 .htaccess 中一样简单(大多数情况下)。我现在正在一个项目上做这件事,而且效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2011-03-20
    • 2010-11-16
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多