我正在考虑将一个相当大的Web应用程序从Zend Framework 1迁移到Symfony 2.这需要以允许ZF1应用程序的维护和功能添加的方式完成,所以我认为前进的好方法是将ZF1应用程序嵌入到Symfony2项目中,以便我可以将功能从一个缓慢移动到另一个 .
我的问题是如何合理地解决这个问题 . 为了证明这个概念可行,我已经修改了 app.php
中对 $kernel->handle()
的调用,以便不会捕获异常,然后我 grab 了 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
}
1 回答
我在这里描述了've implemented a nicer solution by doing something along the lines of what',即通过为
kernel.request
实现一个自定义事件处理程序,如果找不到路由,它将委托给ZF1应用程序 .它仍然可以通过捕获
NotFoundHttpException
,但不是那么黑客 .当Symfony2找不到路由时,是否有更好的方式委派给ZF1应用程序而不是捕获异常?使用异常作为切换条件似乎不太好 .