我们正在考虑将我们的 PHP Webapp 从不使用框架(这正在扼杀我们)转换为使用 Zend 框架。由于应用程序的大小,我认为从头开始不会成为管理的可行选择,因此我想开始研究如何使用 Zend Framework 慢慢地从当前站点结构转换为一个,但没有很多关于这个过程的信息。
到目前为止,我的计划是将当前代码库转储到 Zend 应用程序的 public/ 目录中,修复我确信这会突然出现的许多问题,然后开始一次一个地重写模块。
过去有没有人有过这样做的经验,对你来说效果如何?
我们正在考虑将我们的 PHP Webapp 从不使用框架(这正在扼杀我们)转换为使用 Zend 框架。由于应用程序的大小,我认为从头开始不会成为管理的可行选择,因此我想开始研究如何使用 Zend Framework 慢慢地从当前站点结构转换为一个,但没有很多关于这个过程的信息。
到目前为止,我的计划是将当前代码库转储到 Zend 应用程序的 public/ 目录中,修复我确信这会突然出现的许多问题,然后开始一次一个地重写模块。
过去有没有人有过这样做的经验,对你来说效果如何?
我现在已经做了一些。最适合我的是将 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 样式编写的模型替换旧代码中的类,并让两者都使用它们应用程序的一部分。