如何在同一HTTP端口上的同一服务器上运行Zend Framework代码和遗留(非ZF)代码?

时间:2017-06-26 20:00:44

标签: apache zend-framework configuration zend-framework2 zend-framework3

我有一个很大的代码库,我试图最终转换为Zend-Framework支持的堆栈。

我有时会将新模块写入我可以选择的位置:

  • 继续使用旧版路由/初始化/等进行编写
  • 以某种方式弄清楚如何将ZF用于新模块,而遗留代码的其余部分可以正常使用"和以前一样#34;

这可能吗? 怎么样?

为了给你一个想法,我现在使用专有的多个路由文件,其中ZF中的所有内容都通过一个路由器文件。

所以传统代码就像这样被称为:

http://legacy:80/index.php?route=product

可能类似于zend framework 2 in a subdirectory

Zend Middleware方法

我能够关注https://docs.zendframework.com/zend-mvc/middleware/并实施IndexMiddleware课程。我可以看到正在调用IndexMiddleware::process()方法。但我不确定如何更进一步,以及如何使用我的遗留Web应用程序像以前一样返回数据。 MiddlewareListener。

旧版应用 - index.php

$module = filter($_GET['p']);
if (!empty($module))
   $inc = 'portal/{$module}.php'; //prep a legacy module
require($inc);  //run module

1 个答案:

答案 0 :(得分:1)

那里有很多解决方案......取决于你拥有多少新代码和你想要的地址。

简而言之,您可以在服务器级别(aliasesrewrite等)或PHP代码级别工作。

你可以做的就是使用Zend Skeleton中的index.php,以及通过index.php的默认URL路由。然后看看https://github.com/ariiiman/skylake/blob/master/src/Animation/Morph.js。我相信添加一个可以调度旧应用程序的监听器是一个很好的观点。你可以在application lifecycle, especially the route event中找到大量的监听器来代码(例如,查看中间件)。