从 4.1.9 升级到 4.2.0

请根据你的安装方式参考对应的升级说明。

必须修改的文件

index.php 与 spark

以下文件发生了重大变更, 你必须将更新后的版本合并到你的应用中

  • public/index.php

  • spark

重要

如果不更新以上两个文件,在运行 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_LOWEVENT_PRIORITY_NORMALEVENT_PRIORITY_HIGH 已被弃用, 其定义已移至 app/Config/Constants.php。 如果你使用了这些常量,请在 app/Config/Constants.php 中进行定义。 或者,使用新的类常量 CodeIgniter\Events\Events::PRIORITY_LOWCodeIgniter\Events\Events::PRIORITY_NORMALCodeIgniter\Events\Events::PRIORITY_HIGH

composer.json

备注

在 v4.5.0 或更高版本中不再需要此步骤。

如果你使用 Composer,并且在安装 CodeIgniter v4.1.9 或更早版本时, 在 /composer.jsonautoload.psr-4 中包含 App\\Config\\ 命名空间, 如下所示,则需要移除这些行,并运行 composer dump-autoload

{
    ...
    "autoload": {
        "psr-4": {
            "App\\": "app",             <-- 移除此行
            "Config\\": "app/Config"    <-- 移除此行
        }
    },
    ...
}

破坏性变更

  • system/bootstrap.php 文件不再返回 CodeIgniter 实例, 并且也不再加载 .env 文件(现由 index.phpspark 处理)。 如果你的代码依赖这些行为,将不再生效,必须进行修改。 此变更是为了更方便地实现 预加载

破坏性增强

  • 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