有没有人请描述Zend从Ver 1到3更改了多少架构。最近zend发布了ZF3,但没有提供如何从zf1迁移到zf3的信息。我有一个应用程序是在zf1中开发的,现在正在寻找将它升级为使用带有ZF3的PHP 7电源。我是否需要重写整个代码或需要多少努力才能转移到最新版本。
此外,ZF3声称它在PHP7下的速度提高了4倍。实际上它是PHP7本身更快,而不是ZF3。与Laravel框架相比,我不确定它们有多少改进,而Laravel框架是过去几年的顶级框架之一。
如果有人使用ZF3请分享他们的经验。
答案 0 :(得分:6)
如果您正在处理大型应用程序,则无法快速轻松地迁移到ZF3。从路由到服务,Zend Framework 2/3下的实际和理论框架都与第一次迭代完全相反。
当ZF2首次发布时,我在一个非常大的项目中完成了ZF1到ZF2的迁移(以及ZF2到ZF3)。我们最终使用了增量方法,需要与核心ZF1库稍有不同(即我们编辑了几个Zend类),这对我们来说非常有效。由于ZF1在9月达到了EOL,意味着不再有任何错误修复或更新,这不应该对你造成重大问题。
在下面列出的帖子中,您将找到允许我们完成此迁移的步骤的说明,以及指向部分桥接ZF1 / ZF2的一些代码的链接。由于ZF2和ZF3的更改并未产生太多向后兼容性问题,因此该帖子中详述的步骤仍应(大部分)适用于从ZF1到ZF3的迁移。
Step by step migration from Zend Framework 1 to 2
以下是您可能会发现两个有用的链接。第一个链接是Zend提供的ZF1到ZF2迁移指南。第二个链接是Zend Framework的一般文档。如果组件已更新到3.0版(例如zend-mvc,zend-servicemanager等),则它应包含一个迁移指南,告诉您ZF2 / 3之间的更改。
答案 1 :(得分:3)
这可能是一条充满挑战的道路,但我相信它有可能,虽然可能会花费大量时间。
基本上,从ZF2迁移然后迁移到ZF3。
或者,如果您只是想要PHP7加速,只需升级到PHP7并进行一些lint测试,这可能会发现一些(但不是全部)错误。
继续阅读以获取更多信息......
首先迁移到ZF2
https://framework.zend.com/manual/2.1/en/migration/overview.html
然后,迁移到ZF3:
Zend Framework v2到v3旨在作为增量升级。我们甚至在过去一年中努力在v2版本的组件中提供前向兼容性功能,以允许用户准备他们的代码进行升级。
然而,这不是一本全面的迁移指南。虽然我们知道大多数可能会发生破损的区域,但我们也知道,只有当开发人员实际更新时,我们才会看到完整的情况。因此,将此视为正在进行的工作,请随时通过问题或拉取请求提出更新或更改,以便我们改进!
https://docs.zendframework.com/tutorials/migration/to-v3/overview/
我认为由于从ZF到ZF2的重大变化,可能存在大量的破损。
但是,您可以并行运行ZF1和ZF2:
https://framework.zend.com/manual/2.4/en/migration/zf1_zf2_parallel.html
从技术角度来看,绝对可以与ZF1并行运行ZF2,因为类名之间没有冲突,因为ZF2使用名称空间而ZF1没有。并行运行ZF1和ZF2可以用作项目中的迁移策略,在这些项目中,将整个应用程序从ZF1迁移到ZF2是不可能或不方便的。例如,您可以使用ZF2实现应用程序的任何新功能,同时保留原始ZF1功能。
我不知道ZF1和ZF3是否可以并行运行,但也许并非不可能。
或者,只需尝试使用PHP7
如果是我,我可能会先尝试升级到PHP7并查找代码中的任何破坏。
您可以运行类似于以下内容的东西来对PHP7进行lint测试PHP代码:
find . -name "*.php" -print0 | xargs -P 8 -n 1 -0 sh -c '/usr/local/Cellar/php70/7.0.0/bin/php -l $0 || true' | grep -v 'No syntax'
如果您使用的是Mac,则可以使用Apple版本切换器进行安装。
brew install brew-php-switcher
您可能需要在httpd.conf中注释掉这一行:
#LoadModule php5_module libexec/apache2/libphp5.so
然后:
brew install php71
将此行添加到httpd.conf:
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
切换版本:
brew-php-switcher 71