9

有没有人请描述一下 Zend 从 Ver 1 到 3 改变了多少架构。最近 zend 发布了 ZF3,但没有信息提供如何从 zf1 迁移到 zf3。我有一个应用程序是在 zf1 中开发的,现在正在寻找将其升级为使用 PHP 7 和 ZF3 的功能。我是否需要重写整个代码或需要多少努力才能迁移到最新版本。

此外,ZF3 声称其在 PHP7 下的速度提高了 4 倍。实际上,更快的是 PHP7 本身,而不是 ZF3。我不确定与过去几年顶级框架之一的 Laravel 框架相比,它们改进了多少。

如果有人使用过 ZF3,请分享他们的经验。

4

2 回答 2

8

如果您正在处理大型应用程序,则不会有一种快速而轻松的方式来迁移到 ZF3。从路由到服务,Zend Framework 2/3 下的实践和理论框架都与第一次迭代的完全相反。

ZF2 首次发布时,我在一个非常大的项目上完成了 ZF1 到 ZF2 的迁移(以及 ZF2 到 ZF3)。我们最终使用了一种增量方法,需要对核心 ZF1 库进行微小的偏差(即我们编辑了几个 Zend 类),这对我们来说非常有效。由于 ZF1 在 9 月达到 EOL,这意味着将不再有任何错误修复或任何类型的更新,这对您来说应该不会构成重大问题。

在我在下面列出的帖子中,您将找到允许我们完成此迁移的步骤的描述,以及一些旨在部分桥接 ZF1/ZF2 的代码的链接。因为从 ZF2 和 ZF3 的变化并没有造成太多的向后兼容性问题,所以我在那篇文章中详述的步骤应该仍然(大部分)适用于从 ZF1 到 ZF3 的迁移。

从 Zend Framework 1 到 2 的逐步迁移

这里还有两个您可能会发现有用的链接。第一个链接是 Zend 提供的 ZF1 到 ZF2 迁移指南。第二个链接是 Zend Framework 的通用文档。如果一个组件已经更新到 3.0 版(例如 zend-mvc、zend-servicemanager 等),它应该包含一个迁移指南,告诉您在 ZF2/3 之间发生了哪些变化。

于 2016-10-24T00:16:27.250 回答
4

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

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

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

继续阅读以了解更多...

先迁移到 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. 迁移领域层的策略。

然后,迁移到 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'

如果您使用的是 Mac,则可以通过 brew 安装 PHP 版本切换器。

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
于 2016-10-22T22:19:14.423 回答