dereuromark / cakephp-upgrade
一个帮助从1.x或2.x升级到最新稳定版本的CakePHP插件的包
Requires
- php: >=5.4
- composer/installers: *
This package is auto-updated.
Last update: 2023-12-17 06:44:48 UTC
README
帮助自动化从CakePHP 1.1/1.2/1.3升级到CakePHP 2.x及更高版本的流程。
重要通知 - 2014-02
此插件现在处于“功能冻结”状态,以支持全新的独立 CakePHP 升级工具 - 使用CakePHP 3.x构建。请帮助将所有2.x和3.x相关升级命令迁移到这个新仓库。
改进版本(基于原有版本构建)
原始版本缺少许多可以自动执行的功能。已将更改报告为工单,但到目前为止,这些更改尚未纳入官方版本。
注意:以下某些“安装”步骤仅适用于从1.x升级(如文件夹重命名)。不要将它们视为一个完美调整的工作列表(也不要在意顺序)。每个应用程序,每个设置都是不同的。这更像是一个指南,用于确保基本步骤正确。
它还可以应用许多额外的功能,并强制执行编码标准等。这些命令并非必不可少,但很有用。
安装
Composer(推荐)
在您的composer.json文件所在的文件夹中执行以下操作:
composer require --dev dereuromark/cakephp-upgrade dev-master
自定义
a) 确保您已安装最新的稳定2.x版本的CakePHP核心。通常您只需将当前Cake master分支的/lib
文件夹复制到您的/app
目录旁边的/lib
文件夹中。
b) 将此插件复制到您的/app/Plugin
文件夹中,作为/app/Plugin/Upgrade
。
c) 手动将/app/config
文件夹重命名为/app/Config
(我们需要这里的bootstrap.php文件)。
d) 在您的app/Config bootstrap中放置CakePlugin::load('Upgrade')
或CakePlugin::loadAll();
,以确保此插件被加载。
e) 或者将下载的2.x仓库中的cake shell放置在app/Console中,或者使用lib/Cake中的一个。
f) 准备就绪!运行任何可用的命令(见下文详细信息)。其中最重要的一项是locations
,应首先运行。
在运行shell之前,不要忘记删除旧的(1.x)/cake
文件夹,并手动清除(持久的)缓存。
我从未真正需要手动将我的core.php替换为新2.x core.php。但是由于引入了许多新功能,这样做可能是有意义的。只是不要忘记合并您的现有设置,如盐和缓存/会话/cookie设置。或者至少将您的配置文件与当前master版本进行比较。
记住:此时你已经在使用2.x shell。之前使用的"cake1.x"或任何其他内容现在正式不再使用。
此外:注意大小写!大写和小写非常重要。
使用方法
升级shell
由于这是一个插件,请使用以下方式使用它:
cake Upgrade.Upgrade [command]
不输入任何命令运行它将显示可以选择的命令列表。请首先检查此内容。你可能需要先设置你的cake shell的执行权限(在Unix上),以便运行任何shell。
注意:如果你使用Unix,完整的命令(从你的应用目录相对路径开始)将是:
../lib/Cake/Console/cake Upgrade.Upgrade [command]
在Windows上
..\lib\Cake\Console\cake Upgrade.Upgrade [command]
如果你使用app/Console shell代替(要使其生效,你还需要从核心库的/Templates/skel/中复制Console文件)
Console/cake Upgrade.Upgrade [command]
对于Windows
.\Console\cake Upgrade.Upgrade [command]
使用APP/Console的简短版本是首选,因为你迟早需要这些文件。这也是2.x中调用shell的文档化方法。特别是如果你计划为你的2.x应用使用composer。
此版本现在还支持原始命令/任务
- webroot(重要)
- database(重要)
- routes(重要)
- 遗留
- 名称
- 构造函数
- 报告
- 严格
- 视图
- 分页器(只运行一次!)
等等
新功能现在也支持
- svn(Linux/Windows)
- 分组命令
- 除了命令(除了少数几个,例如
except paginator
跳过分页器方法)
正确的shell
此外,你可以使用CorrectShell来纠正以下内容:
- 请求
- 和
- vis
- 参考
- i18n
- 表单
- 约定
- 约定2
- html5
- php53
使用cake Upgrade.Correct [command]
提示:你可以使用cake Upgrade.Correct all
来快速应用所有相关的纠正命令。
提示2:对我来说最重要的特性是我的版本干净地分离了应用和插件。不使用-p PluginName时,它们将保持原样。如果你想升级插件,请使用
cake Upgrade.Upgrade [command] -p PluginName
我还添加了对-p * -的支持,以一次解决所有插件。这只有通过像这样使用group
命令才能完全支持
cake Upgrade.Upgrade group [command1] [command2] ... -p *
你需要提供至少两个命令(如果你想只使用一个,请将其输入两次)
cake Upgrade.Upgrade group [command1] [command1] -p *
这是因为一个参数代表一个配置组
未充分测试的插件通配符使用方法
cake Upgrade.Upgrade [command] -p *
应该一次性抓取所有文件并处理它们
转换shell
目前转换shell处理以下内容:
- 从长数组()语法到短[](PHP5.3到PHP5.4)
MyUpgrade shell
这主要是针对工具插件和特定应用的内容。你可以忽略这个shell。
更新 2012年1月:支持2.1
现在支持
- Auth::allow()、布局内容等
更新 2012年9月:支持到2.3
现在支持
- request->query()和Set/Hash替换
更新:2012年12月
现在创建自2.1以来所需的缺失应用类
- AppHelper, AppModel 和 AppController(AppShell目前不是必需的)
更新:2013年夏季:2.4/2.5(以及一些3.0)支持
- onlyAllow() 到 allowMethod() 等
更新:2014年夏季:2.6支持
- 一些验证规则已更改
更新:2015年:2.7和2.8支持
免责声明
请在备份您的应用文件夹后使用此脚本。
此外:此强大插件不是为新手准备的。如果您不了解至少一些Cake基础知识,请不要使用它。
故障排除
- 确保您已启用
debug
模式并/或已清除缓存。 - 使用全新的2.x应用并使用此插件来了解新主版本的工作方式以及插件的操作方式,如果您是第一次使用2.x进行试验。然后,通过获得一些更深入的了解,将1.x应用迁移到2.x将更容易。
我的建议
请使用git、svn或其他版本控制系统来验证所做的更改。这样,您可以立即检测到错误的替换。因此,最好单独使用每个升级命令,并在每次成功运行后提交/推送。如果某个命令出现问题,您可以很容易地恢复到最后一步。请谨慎使用regexp
命令,因为它们有时可能过于积极,并且尚未进行全面测试。
因此,理想的顺序可能是
- 位置
- webroot
- 路由
- 数据库
- (其余部分 - 应用程序可能已经在这一点上可浏览了)
您真的必须亲自做的事情(想象一下^^)
- 确保您已将缺失的App::uses()语句添加到类文件中
- 修复一些ESTRICT错误
- 应用新功能缺失的配置
以及迁移指南中详细记录的所有其他尚未涵盖的内容
- https://book.cakephp.com.cn/2.0/en/appendices/2-0-migration-guide.html
- https://book.cakephp.com.cn/2.0/en/appendices/2-1-migration-guide.html
- https://book.cakephp.com.cn/2.0/en/appendices/2-2-migration-guide.html
- https://book.cakephp.com.cn/2.0/en/appendices/2-3-migration-guide.html
- https://book.cakephp.com.cn/2.0/en/appendices/2-4-migration-guide.html
- https://book.cakephp.com.cn/2.0/en/appendices/2-5-migration-guide.html
- https://book.cakephp.com.cn/2.0/en/appendices/2-6-migration-guide.html
- https://book.cakephp.com.cn/2.0/en/appendices/2-7-migration-guide.html