从 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

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

{
    ...
    "autoload": {
        "psr-4": {
            "App\\": "app",             <-- Remove this line
            "Config\\": "app/Config"    <-- Remove this line
        }
    },
    ...
}

重大更改

  • system/bootstrap.php 文件不再返回 CodeIgniter 实例,并且不加载 .env 文件(现在在 index.phpspark 中处理)。如果您有期望这些行为的代码,它将不再起作用,并且必须修改。此更改是为了使 预加载 更易于实现。

重大增强

  • Validation::setRule() 的方法签名已更改。$rules 参数上的 string 类型提示已删除。扩展类也应删除该参数,以免破坏 LSP。

  • CodeIgniter\Database\BaseBuilder::join()CodeIgniter\Database\*\Builder::join() 的方法签名已更改。$cond 参数上的 string 类型提示已删除。扩展类也应删除该参数,以免破坏 LSP。

项目文件

项目空间(根目录、应用程序、公共、可写)中的众多文件已收到更新。由于这些文件位于系统范围之外,因此在您不干预的情况下,它们不会更改。有一些第三方 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