如何解决cakephp 从 2.10 升级到 3.x
我正在使用官方迁移工具 https://book.cakephp.org/3/en/upgrade-tool.html,命令如下:
bin/cake upgrade all
尽管这做了几处更改,但最终还是会导致无法使用的安装并出现各种致命错误。
我知道需要采取手动步骤,但我找不到任何地方的文档。
我的问题是:
-
是否有关于所需步骤的指南?
-
该工具实际上并未将版本更新到 3.0。这我需要做如下。这样对吗?我应该在运行迁移工具之前还是之后更新?
-
我还需要运行
bin/cake upgrade skeleton
命令吗? F.e 这将创建 /src 和 /webroot 文件。我应该先运行这个吗? -
最后是否需要进行任何清理,因为该工具还保留了旧结构。
解决方法
可能没有任何 2.x 应用程序可以自动升级到可用的 3.x 应用程序,您仍然需要手动修复和迁移大部分应用程序代码和配置,升级工具真的只是一个帮手,可以帮你完成一些重复性的工作。
强烈建议您首先熟悉 CakePHP 3.x,直到您对使用它创建可靠的应用程序的能力充满信心,这将帮助您解决许多迁移过程中可能出现的问题,并将提高迁移应用程序的质量!
话虽如此:
-
我不知道有任何详尽的指南(这并不意味着没有),但您可以轻松找到人们写下他们的升级体验,例如 https://www.dereuromark.de/2015/06/06/cakephp-3-0-migration-notes
-
该工具不会更新 CakePHP 依赖项,不会。它期望您自己编写应用程序,并且您自己升级依赖项,它不可能解决升级核心时可能出现的依赖项冲突。
理想情况下,首先或最后升级依赖项应该无关紧要,但为了安全起见,您应该在运行升级工具之后进行。
-
您不必必须运行
skeleton
任务,如果您知道自己在做什么,也可以手动从 3.x 应用程序框架复制文件做 - 在任何情况下,这些文件都是必需的,并且应该在所有其他任务运行后添加它们,您不希望任何任务更改这些文件的代码。请注意,skeleton
任务将覆盖您的某些文件,例如bootstrap.php
和routes.php
! -
是的,您必须自己清理可能的残留物。
我目前正在处理从 2.x 迁移到 3.x 的项目。由于项目的规模和复杂性,我们的方法是逐步迁移。
第一阶段是为除模型之外的所有类添加命名空间,让它们由 composer 加载并摆脱对 ClassRegistry 的依赖。
我们目前所处的第二阶段是迁移模型层。我们通过在同一个项目中同时使用 2.x 模型和 3.x 模型来做到这一点。 https://github.com/cakephp/orm 需要 Composer 安装,与 2.x 类不冲突。过程是这样的——从2.x模型中取一个方法,将其迁移到3.x模型(表类),将使用此方法的任何代码调整为使用实体对象。这样我们同时在Model文件夹中有User类,在Model/Table文件夹中有UsersTable类。
为了能够在 FormHelper 中使用实体对象,我们创建了 Form3xHelper 类,该类扩展了 FormHelper,覆盖了 create
和 _introspectModel
方法以支持与真正的 3.x FormHelper 相同的方法签名和使用实体对象设置表单字段。
下一阶段是将所有 FormHelper 更改从 2.x 迁移到 3.x,也可以通过调整我们的 Form3xHelper 逐步完成。
迁移模型和 FormHelper 层后,迁移控制器就不那么难了。
我差点忘了提到我们使用 ShimPlugin - https://github.com/dereuromark/cakephp-shim/tree/cake2。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。