什么';在Symfony2项目中同时使用Doctrine1和Doctrine2的最佳方式是什么?

什么';在Symfony2项目中同时使用Doctrine1和Doctrine2的最佳方式是什么?,symfony,doctrine-orm,symfony1,doctrine-1.2,Symfony,Doctrine Orm,Symfony1,Doctrine 1.2,我们正在考虑将一个大项目从symfony1.4迁移到Symfony2 该应用程序使用Selenium进行了大量的功能测试(单元测试几乎不存在-Doctrine1/symfony1没有邀请我们做这些测试),我们希望以透明的方式逐步在Symfony2中重新实现我们的功能,这样我们就可以继续运行这些功能测试,以验证我们在这个过程中没有破坏任何东西 我们一直在寻找一些人的文章,这些人以前可能也走过同样的道路,寻找关于最佳方法的想法,但有一部分我们没有看到任何建议或反馈,具体来说,这是否容易、可能,以及我

我们正在考虑将一个大项目从symfony1.4迁移到Symfony2

该应用程序使用Selenium进行了大量的功能测试(单元测试几乎不存在-Doctrine1/symfony1没有邀请我们做这些测试),我们希望以透明的方式逐步在Symfony2中重新实现我们的功能,这样我们就可以继续运行这些功能测试,以验证我们在这个过程中没有破坏任何东西

我们一直在寻找一些人的文章,这些人以前可能也走过同样的道路,寻找关于最佳方法的想法,但有一部分我们没有看到任何建议或反馈,具体来说,这是否容易、可能,以及我们如何逐步重新实现我们的模型层

我的问题是,有没有人在Symfony2项目中同时使用Doctrine1和Doctrine2?我们可以通过什么方式实现这一目标?我们应该面对哪些问题?


对于添加的上下文,下面是我们如何处理从symfony1.4到Symfony2的应用程序的渐进重新实现的所有其他问题

对于控制器,我们可以使用Stefan Koopmanchap描述的方法和相关捆绑包,使未实现的路由透明地回退到symfony1项目。Maurits van der Schee也提供了一个很好的方法,可以在两个应用程序之间共享身份验证和安全性

对于视图,我们希望能够使用符号链接在项目之间共享“web/”资产,并开始将它们从sf1复制到Sf2,并用作临时模板引擎


对于模型,我们可以让Doctrine2从原始sf1数据库生成样板文件,但将Doctrine1类中的模型中的所有业务逻辑重新实现为Doctrine2类的过程预计将是艰巨的,因此我们更倾向于以渐进的方式进行,有时Sf2会使用Doctrine1代码(如果尚未重新实现)并使用等效的Doctrine2(如果已经重新实现)。
我们不一定需要自动实现(这很好,但不确定是否可行),控制器或其他模型类可以决定在每种情况下使用Doctrin1还是Doctrin2。这是可以实现的吗?如何实现?我们忘记了什么?什么是复杂的,什么是容易的?

我在使用Symfony 1.4和Symfony2时遇到过这种情况。Symfony 1.4和Symfony2——以及Doctrin1和2——都不会成功一起工作

我们的解决方案是在Symfony 1.4中创建插件,以访问一个单独的web应用程序——一个新的Symfony2 web应用程序,它最终将取代Symfony 1.4 web应用程序

在Symfony2中创建一个API,公开Symfony 1.4应用程序访问的同一数据库中的数据

例如,假设您的Symfony 1.4应用程序具有以下路径:

  • /home
  • /orders
  • /sales
在Symfony 1.4应用程序中,删除
/sales
的控制器和路线。您的目标是将
/sales
路线移动到Symfony2。您希望以模块方式执行此操作—一次更换一件(每条路线)

创建一个Symfony 1.4插件,用于访问您在Symfony2中创建的新应用程序——Symfony2应用程序立即处理
/sales
路线。Symfony 1.4现在从您创建的Symfony2 API获取信息

/在Symfony1.4中,主页和/订单仍然存在,但您已将/销售移至Symfony2

逐件向Symfony2应用程序添加功能。在运行时从Symfony 1.4中删除路线

我希望这会有帮助。我不确定我是否解释得很好。我很乐意回答任何问题