我们有一个非常大的应用程序,它有大约8个使用Zend框架1编写的模块(大模块),并且它已经被几个开发人员开发了3年多。此外,它每天都有很高的流量。我们也使用Amozon s3,Sphinx,Memcache和其他一些第三方服务。
将它迁移到Zend框架2是一个好主意吗?因为当我们简要地阅读文档时,似乎Zend框架2已被完全重写。因此,我们认为我们无法轻松迁移应用程序,而不是根据ZF 2重新编写应用程序。
有价值的想法将受到高度赞赏。
答案 0 :(得分: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美元,但我希望它有所帮助。
答案 1 :(得分:2)
没有快捷方式进行迁移,因为ZF2与ZF1非常不同。