从 4.1.9 升级到 4.2.0
请根据你的安装方式参考对应的升级说明。
必须修改的文件
index.php 与 spark
以下文件发生了重大变更, 你必须将更新后的版本合并到你的应用中:
public/index.phpspark
重要
如果不更新以上两个文件,在运行 composer update 之后,
CodeIgniter 将完全无法工作。
例如,升级步骤如下:
composer update
cp vendor/codeigniter4/framework/public/index.php public/index.php
cp vendor/codeigniter4/framework/spark .
Config/Constants.php
常量 EVENT_PRIORITY_LOW、EVENT_PRIORITY_NORMAL 和 EVENT_PRIORITY_HIGH 已被弃用,
其定义已移至 app/Config/Constants.php。
如果你使用了这些常量,请在 app/Config/Constants.php 中进行定义。
或者,使用新的类常量
CodeIgniter\Events\Events::PRIORITY_LOW、
CodeIgniter\Events\Events::PRIORITY_NORMAL 和
CodeIgniter\Events\Events::PRIORITY_HIGH。
composer.json
备注
在 v4.5.0 或更高版本中不再需要此步骤。
如果你使用 Composer,并且在安装 CodeIgniter v4.1.9 或更早版本时,
在 /composer.json 的 autoload.psr-4 中包含 App\\ 和 Config\\ 命名空间,
如下所示,则需要移除这些行,并运行 composer dump-autoload。
{
...
"autoload": {
"psr-4": {
"App\\": "app", <-- 移除此行
"Config\\": "app/Config" <-- 移除此行
}
},
...
}
破坏性变更
system/bootstrap.php文件不再返回CodeIgniter实例, 并且也不再加载.env文件(现由index.php和spark处理)。 如果你的代码依赖这些行为,将不再生效,必须进行修改。 此变更是为了更方便地实现 预加载。
破坏性增强
Validation::setRule()的方法签名已更改,移除了$rules参数上的string类型提示。 继承该方法的类同样应移除该类型提示,以避免破坏 LSP。CodeIgniter\Database\BaseBuilder::join()和CodeIgniter\Database\*\Builder::join()的方法签名已更改, 移除了$cond参数上的string类型提示。 继承该方法的类同样应移除该类型提示,以避免破坏 LSP。
项目文件
项目空间 (根目录、app、public、writable)中的部分文件已更新。 由于这些文件位于 system 范围之外,框架不会在没有你介入的情况下自动修改它们。
目前有一些第三方 CodeIgniter 模块可用于协助合并项目空间中的变更: 在 Packagist 上浏览。
备注
除极少数用于缺陷修复的情况外,对项目空间文件所做的任何修改都不会破坏你的应用。 此处列出的所有变更在下一个主版本发布前都是可选的, 任何强制性变更都会在上述章节中说明。
内容变更
以下文件发生了较大的改动(包括弃用项或界面调整),建议将更新后的版本合并到你的应用中:
app/Config/Routes.php为提高默认配置的安全性,自动路由现已默认禁用。
所有变更
以下是 项目空间 中所有发生变更的文件列表; 其中许多仅为注释或格式调整,不会影响运行时行为:
app/Config/App.php
app/Config/Constants.php
app/Config/ContentSecurityPolicy.php
app/Config/Database.php
app/Config/Events.php
app/Config/Feature.php
app/Config/Filters.php
app/Config/Format.php
app/Config/Logger.php
app/Config/Mimes.php
app/Config/Publisher.php
app/Config/Routes.php
app/Config/Security.php
app/Config/Validation.php
app/Config/View.php
app/Controllers/BaseController.php
app/Views/errors/html/debug.css
app/Views/errors/html/debug.js
app/Views/errors/html/error_404.php
app/Views/errors/html/error_exception.php
app/Views/errors/html/production.php
app/Views/welcome_message.php
app/index.html
preload.php
public/index.php
spark