从Zend Framework 1迁移到Zend Framework 2


Migrate to Zend Framework 2 from Zend Framework 1

我们有一个相当大的应用程序,它有大约8个模块(大模块)使用Zend框架1编写,它已经由几个开发人员开发了3年多。而且它每天都有很高的流量。我们使用amazon s3, Sphinx, Memcache和其他一些第三方服务。

迁移到Zend框架2是一个好主意吗?因为当我们简单地浏览文档时,似乎Zend框架2已经完全重写了。因此,我们认为我们将无法轻松地迁移应用程序,而不是根据zf2重写应用程序。

请多多指教。

你是对的,ZF2是一个完全不同的动物。如此不同,事实上,没有一个放之四海而皆准的迁移计划/策略。

然而,我最近做了一个类似的迁移。它是一个相当复杂的业务线应用程序,最初编写了大约18个月,具有一系列不同的功能。做出这一决定的主要驱动因素是模块和事件系统的改进。

在我们的案例中,它变成了产品的主要发布版本,最终包括了一堆UI更改以及所有管道。

假设您喜欢ZF1,好消息是ZF2是一个更好的框架(作为一个框架)。ModuleManager, EventManager, Di和ServiceManager组件(以及一般的mvc相关的东西)真的很棒,一旦你掌握了它们。坏消息是它们完全背离了ZF1。所以你至少要彻底修改你的调度和路由,你要和Zend_Registry说再见了(ServiceManager/ServiceLocator是一个巨大的改进)。

另一个好消息是,只要您需要,几乎可以肯定地保留所有旧的zf1类型组件。因此,如果你依赖于Zend_Cache, Zend_Log, Zend_Mail等,那么稍微调整一下自动加载配置应该可以实现这一点。

我的建议是,如果您确实要冒险,请先考虑迁移到ZF2-as-a-framework,然后再考虑ZF2-as-a-component-library。

如果你坚持胖模型/瘦控制器范例,它可能是可行的,只是替换控制器,前端控制器,Zend_Application的东西在一个相当直接的方式。一旦将其投入生产,就可以在时间允许的情况下消除对ZF1组件的依赖。在我的例子中,没有太多的东西,因为事情被很好地分解和包装(所以,例如,从Zend_Cache移动到Zend'Cache是微不足道的)

最后,您应该预先知道视图层的内容(主要是与helper相关的内容)也是不同的。如果你有一堆复杂的视图相关的东西(部分,自定义视图助手等),你需要预期重写它们,或者找到一种方法来使用ZF2中旧的Zend_View的东西,这样你就可以零星地迁移。我没有真正处理这个问题,因为我们的界面相当简单,我们把它作为一个机会来彻底检查UI。

这是我的0.02美元,但我希望它能有所帮助。

没有快速和简单的方法来迁移,因为ZF2与ZF1非常不同。

相关:从Zend Framework 1逐步迁移到2