我正在考虑将一个相当大的Web应用程序从Zend Framework 1迁移到Symfony 2.这需要以允许ZF1应用程序的维护和功能添加的方式完成,所以我认为好的方法是将ZF1应用程序嵌入到Symfony2项目中,这样我就可以慢慢地将功能从一个移动到另一个。
我的问题是如何合理地解决这个问题。为了证明这个概念有效,我已经修改了$kernel->handle()
中对app.php
的调用,以便不会捕获异常,然后我抓住了NotFoundHttpException
并使用了调用ZF前端控制器(参见下面的代码),但这感觉就像一个可怕的黑客。实现这一目标的更好方法是什么?
app_dev.php:
...
try {
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request, null, false); // Don't handle exceptions
$response->send();
$kernel->terminate($request, $response);
} catch (NotFoundHttpException $e) {
require_once 'index.php'; // Dispatch ZF1 app
}
答案 0 :(得分:0)
我已经实现了一个更好的解决方案,通过执行这里描述的内容:http://marcjschmidt.de/blog/2013/11/30/symfony-custom-dynamic-router.html,即通过实现kernel.request
的自定义事件处理程序,如果路由不是,则委托给ZF1应用程序找不到。
它仍然可以通过捕获NotFoundHttpException
,但不是那么糟糕。
Symfony2找不到路由时是否有更好的方式委托给ZF1应用程序而不是捕获异常?使用异常作为切换条件似乎不太好。