Symfony2中的Zend Framework 1应用程序

时间:2014-06-20 09:52:05

标签: php symfony zend-framework

我正在考虑将一个相当大的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
   }

1 个答案:

答案 0 :(得分:0)

我已经实现了一个更好的解决方案,通过执行这里描述的内容:http://marcjschmidt.de/blog/2013/11/30/symfony-custom-dynamic-router.html,即通过实现kernel.request的自定义事件处理程序,如果路由不是,则委托给ZF1应用程序找不到。

它仍然可以通过捕获NotFoundHttpException,但不是那么糟糕。

Symfony2找不到路由时是否有更好的方式委托给ZF1应用程序而不是捕获异常?使用异常作为切换条件似乎不太好。