从Zend Framework 1迁移到Zend Framework 2

Sha*_*lin 3 php zend-framework zend-framework2

我们有一个非常大的应用程序,它有大约8个模块(大模块)使用Zend框架1编写,并且它已经被几个开发人员开发了超过3年.此外,它每天都有很高的流量.我们也使用Amozon s3,Sphinx,Memcache和其他一些第三方服务.

将它迁移到Zend框架2是一个好主意吗?因为当我们简要地阅读文档时,似乎Zend框架2已被完全重写.因此,我们认为我们无法轻松迁移应用程序,而不是根据ZF 2重新编写应用程序.

有价值的想法将受到高度赞赏.

tim*_*dev 6

你是对的,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.

如果你坚持使用fat-model/skinny-controller范例,那么以一种相当直接的方式替换Controllers,Front-Controller,Zend_Application的东西可能是可行的.一旦将其投入生产,您就可以在时间允许的情况下继续删除ZF1组件的依赖关系.在我的情况下,没有太多的,因为事情是非常好的因素和包装(因此,例如,从Zend_Cache转移到Zend\Cache是​​微不足道的)

最后,您应该事先了解View-layer的东西(主要是与帮助程序相关的东西)也是不同的.如果你到处都有一堆复杂的与视图相关的东西(部分,自定义视图助手等),你需要预期重写它们,或者找到一种方法在ZF2中使用旧的Zend_View,这样你就可以迁移零碎.我没有真正处理这个问题,因为我们的界面相当简单,我们把它作为改造UI的机会.

只需0.02美元,但我希望它有所帮助.