我如何将Zend框架1迁移到3


How can I migrate Zend Framework 1 to 3

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

此外,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 Framework 1到2的逐步迁移

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

  • ZF1到ZF2迁移- https://framework.zend.com/manual/2.4/en/migration/overview.html
  • ZF3文档- https://docs.zendframework.com/

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

  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

从技术角度来看,完全有可能与ZF1并行运行ZF2,因为由于ZF2使用名称空间而ZF1不使用,所以类名之间没有冲突。在不可能或不方便将整个应用程序从ZF1迁移到ZF2的项目中,并行运行ZF1和ZF2可以用作一种迁移策略。例如,您可以使用ZF2实现应用程序的任何新特性,同时保持原来的ZF1特性。

我不知道ZF1和ZF3是否可以并行运行,但也许不是不可能。

或者,在PHP7

中试试

如果是我,我可能会先尝试升级到PHP7,然后寻找代码中的任何漏洞。

你可以运行类似于下面的代码来测试你的PHP代码对PHP7:

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上,你可以使用PHP版本切换器通过安装它与brew。

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