如何将Zend Framework 1迁移到3

时间:2016-10-22 21:28:33

标签: 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请分享他们的经验。

2 个答案:

答案 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)

这可能是一条充满挑战的道路,但我相信它有可能,虽然可能会花费大量时间。

  1. 基本上,从ZF2迁移然后迁移到ZF3。

  2. 或者,如果您只是想要PHP7加速,只需升级到PHP7并进行一些lint测试,这可能会发现一些(但不是全部)错误。

  3. 继续阅读以获取更多信息......

    首先迁移到ZF2

    https://framework.zend.com/manual/2.1/en/migration/overview.html

    1. 用于命名代码的工具。
    2. 在Zend Framework 1应用程序中使用Zend Framework 2的工具。
    3. 并行运行Zend Framework 2和Zend Framework 1的策略。
    4. 使代码更易于迁移的策略,主要侧重于域逻辑和MVC层的清晰分离。
    5. 迁移MVC层的策略。
    6. 迁移域层的策略。
    7. 然后,迁移到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