Dhe*_*raj 9 php zend-framework php-7 zend-framework3 zf3
有没有人请描述Zend从Ver 1到3更改了多少架构.最近zend发布了ZF3,但没有提供如何从zf1迁移到zf3的信息.我有一个应用程序是在zf1中开发的,现在正在寻找将它升级为使用带有ZF3的PHP 7电源.我是否需要重写整个代码或需要多少努力才能转移到最新版本.
此外,ZF3声称它在PHP7下的速度提高了4倍.实际上它是PHP7本身更快,而不是ZF3.与Laravel框架相比,我不确定它们有多少改进,而Laravel框架是过去几年的顶级框架之一.
如果有人使用ZF3请分享他们的经验.
如果您正在处理大型应用程序,则无法快速轻松地迁移到ZF3.从路由到服务,Zend Framework 2/3下面的实际和理论框架都与第一次迭代完全相反.
当ZF2首次发布时,我在一个非常大的项目中完成了ZF1到ZF2的迁移(以及ZF2到ZF3).我们最终使用了增量方法,需要与核心ZF1库有轻微偏差(即我们编辑了几个Zend类),这对我们来说非常有效.由于ZF1在9月达到EOL,意味着不再有任何错误修复或更新,这不应该对您造成严重问题.
在下面列出的帖子中,您将找到允许我们完成此迁移的步骤的说明,以及指向部分桥接ZF1/ZF2的一些代码的链接.由于ZF2和ZF3的更改并未产生太多向后兼容性问题,因此该帖子中详述的步骤仍应(大部分)适用于从ZF1到ZF3的迁移.
这里有两个你可能会发现有用的链接.第一个链接是Zend提供的ZF1到ZF2迁移指南.第二个链接是Zend Framework的一般文档.如果某个组件已更新到3.0版(例如zend-mvc,zend-servicemanager等),它应该包含一个迁移指南,告诉您ZF2/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
从技术角度来看,ZF2 与 ZF1 并行运行是绝对可能的,因为 ZF2 使用命名空间而 ZF1 不使用命名空间,因此类名之间不存在冲突。在无法或不方便将整个应用程序从 ZF1 迁移到 ZF2 的项目中,并行运行 ZF1 和 ZF2 可以用作迁移策略。例如,您可以使用 ZF2 实现应用程序的任何新功能,同时保留原始 ZF1 功能。
我不知道ZF1和ZF3是否可以并行运行,但也许并非不可能。
或者,用 PHP7 尝试一下
如果是我,我可能会先尝试升级到 PHP7,然后查找代码中是否有任何损坏。
您可以运行类似于以下内容的代码来针对 PHP7 对 PHP 代码进行 lint 测试:
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'
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Mac,则可以通过使用 brew 安装来使用 PHP 版本切换器。
brew install brew-php-switcher
Run Code Online (Sandbox Code Playgroud)
您可能需要在 httpd.conf 中注释掉这一行:
#LoadModule php5_module libexec/apache2/libphp5.so
Run Code Online (Sandbox Code Playgroud)
然后 :
brew install php71
Run Code Online (Sandbox Code Playgroud)
将此行添加到您的 httpd.conf 中:
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
切换版本:
brew-php-switcher 71
Run Code Online (Sandbox Code Playgroud)