27

我必须将应用程序从 Zend Framework 1.12.0 迁移到版本 2。似乎还没有迁移指南。我已经研究过 ZF2 编码约定,并采用了依赖注入 (Zend\Di) 和 PHP 5.3 命名空间。我的目标是将我的 ZF1 应用程序重构为 ZF2 模块。

问题:是否可以在每一步之后逐步使用至少部分工作的应用程序避免大量的重构步骤?如果是,步骤是什么?

这是我对这种逐步迁移的想法,但我不知道在每一步之后我是否最终得到了一个工作应用程序:

  1. 首先设置ZF2 骨架应用程序
  2. 设置一个新模块(MyApp),并将我的ZF1应用程序的内容重新组织到MyApp模块文件夹结构中。然后设置非常基本的配置和引导并通过从 ZF2 AbstractActionController 扩展 IndexController 来迁移它。模型 (Zend_Db) 和视图 (Zend_View) 将稍后迁移。这里的目标是拥有一个没有很多依赖项的有效 IndexController::indexAction。
  3. 设置更多配置和引导(路由、翻译、区域设置、缓存、Db、Acl、ViewHelpers...)。我想先设置这些组件的ZF1版本,以后再一个一个迁移。
  4. 使用 Zend\Di 或使用 ServiceManager迁移其他控制器并设置依赖注入到控制器中。
  5. 通过使旧的phing脚本与新的目录结构一起工作来设置自动部署。
  6. 将视图(包括助手)和表单迁移到 ZF2。
  7. 迁移模型(从 Zend_Db 到 ZF2 Zend\Db 或到 Doctrine)。
  8. 一个一个地迁移其他 ZF1 组件(Translate、Locale、Cache、Acl,...)。
  9. 重构康复和长假。

但是,只有当某些 ZF2 组件与 ZF1 组件一起工作时,我才会在每一步之后都有一个工作应用程序。我不知道是否可以将 ZF1 视图(和视图助手)与 ZF2 控制器一起使用。

4

4 回答 4

8

曾经在某处写过,使用一些中间层会很容易,但我从未在库中看到任何链接或任何看起来像它的东西。

现在,您可以找到的唯一内容和最新信息是在文档的概述页面中。就是这个:

注意 ZF2 不向后兼容 ZF1,因为框架实现了 PHP 5.3+ 中的新功能,并且由于对许多组件进行了重大重写。

我从没想过它会向后兼容,但我认为这里的关键声明是对许多组件的主要重写

几个月前我用 ZF2 开始了一个新项目,我只想要这个库;所以没有 MVC 这应该很容易,对吧?到目前为止,这几乎是一场噩梦,因为一切都不再一样了。除了一些熟悉的类名或结构外,整个框架已经从头开始完全重写。

我喜欢的、经常使用的和熟记的东西,比如表单、缓存或会话是完全不同的。对于我的项目,它花费了我很多时间而没有任何好处。我认为 ZF2 的关键对象之一是彻底检查文档,这些文档的编写方式比以前的文档差。

对于我其他现有的 ZF1.x 项目,除了完全重写应用程序之外,我看不到如何管理升级。

于 2012-11-16T17:29:39.577 回答
8

从 Zend Framework 1 迁移

本指南旨在提供从 Zend Framework 1 迁移到 Zend Framework 2 的工具和策略。没有适用于每个项目的单一解决方案,也没有任何工具可以自动化该过程。

在本指南中,我们将介绍以下内容:

  1. 用于命名代码的工具。
  2. 在 Zend Framework 1 应用程序中使用 Zend Framework 2 的工具。
  3. 并行运行 Zend Framework 2 和 Zend Framework 1 的策略。
  4. 使您的代码更易于迁移的策略,主要关注域逻辑和 MVC 层的清晰分离。
  5. 迁移 MVC 层的策略。
  6. 迁移领域层的策略。

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

于 2013-06-26T19:50:12.397 回答
2

来自Zend Framework 2 常见问题解答

我有一个使用 Zend Framework 1 构建的应用程序——我可以将它迁移到新版本吗?

绝对地。Zend Framework 2 的一个重要部分是迁移层,它将允许 ZF 1 代码在新的 ZF 2 引擎上运行,该引擎将在未来提供。有了它,您将能够以可控的速度添加新的 ZF 2 代码并重构现有代码。

但是,在这一点上,我还没有听说过任何实际的迁移层。我们只能希望会有,但在这一点上,我有我的怀疑。

于 2013-02-28T23:41:25.793 回答
2

在过去的一年中,我们一直在将一个大型应用程序从 Zend Framework 1 迁移到 Zend Framework 2。我们从命名空间等简单的东西开始,然后慢慢地进入各种库组件。最终,我们最终编辑Zend_Layout了 to work with Zend\FilterZend_Formto work withZend\FilterZend\JsonZend_Navigationto work withZend\Permissions\Acl等。这帮助我们消除了几乎所有 ZF1 组件,除了 ZF1 应用程序结构包括四个类Zend_ApplicationZend_ConfigZend_ControllerZend_Layout. 拼图的最后一块是 和 的实现Zend\Mvc\ApplicationZend\View其余部分是 ZF2 就绪的。

最近,我们创建了一个代理来连接Zend\Mvc\ApplicationZF1 和 ZF2 模块。这非常有帮助。我在http://webjawns.com/2013/11/migrating-to-zf2-integrating-composer-and-doctrineormmodule/详细介绍了这些步骤。

总之...

  • 将前缀转换为命名空间(Model_to Model\Application_ControllertoApplication\Controller等)
  • 将非 MVC 组件替换为 ZF2 对应组件,包括自动加载器
  • 创建 ZF2 应用程序结构和挂钩以开始使用 ZF2 模块
  • 移动控制器和视图(仍在为此制定计划)
于 2013-11-11T17:38:34.630 回答