从 4.4.3 升级到 4.4.4

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

强制文件变更

错误文件

请更新以下文件,以显示正确的错误消息:

  • app/Views/errors/cli/error_exception.php

  • app/Views/errors/html/error_exception.php

破坏性变更

使用点数组语法的验证

如果你在验证规则中使用 点数组语法, 那么 * 会在错误维度中验证数据的缺陷现已修复。

在之前的版本中,规则键 contacts.*.name 会错误地匹配任意层级的数据, 例如 contacts.*.namecontacts.*.*.namecontacts.*.*.*.name 等。

以下代码说明了详细情况:

use Config\Services;

$validation = Services::validation();

$data = [
    'contacts' => [
        'name' => 'Joe Smith',
        'just' => [
            'friends' => [
                ['name' => 'SATO Taro'],
                ['name' => 'Li Ming'],
                ['name' => 'Heinz Müller'],
            ],
        ],
    ],
];

$validation->setRules(
    ['contacts.*.name' => 'required|max_length[8]'],
);

$validation->run($data); // false

d($validation->getErrors());
/*
 Before: Captured `contacts.*.*.*.name` incorrectly.
 [
   contacts.just.friends.0.name => "The contacts.*.name field cannot exceed 8 characters in length.",
   contacts.just.friends.2.name => "The contacts.*.name field cannot exceed 8 characters in length.",
 ]

 After: Captures no data for `contacts.*.name`.
 [
   contacts.*.name => string (38) "The contacts.*.name field is required.",
 ]
*/

如果你的代码依赖该缺陷,需要修正规则键。

Validation 规则中的 matches 和 differs

由于 Strict Rules 和 Traditional Rules 中 matchesdiffers 在验证非字符串类型数据时的缺陷已被修复, 如果你使用这些规则来验证非字符串数据,验证结果可能会发生变化(即得到修正)。

请注意,Traditional Rules 不应用于验证非字符串数据。

CURLRequest 中移除了 ssl_key 选项

CURLRequest 选项 ssl_key 已不再被识别。

如果你正在使用该选项,必须将 ssl_key 替换为 verify 选项, 以便为 CURLRequest 定义 CA bundle 的路径。

和以往一样,CURLRequest 选项 verify 也可以接受 boolean 值。

项目文件

项目空间 (根目录、app、public、writable)中的部分文件已更新。 由于这些文件位于 system 范围之外,框架不会在没有你介入的情况下自动修改它们。

目前有一些第三方 CodeIgniter 模块可用于协助合并项目空间中的变更: 在 Packagist 上浏览

所有变更

以下列出了 项目空间 中所有发生变更的文件; 其中多数只是注释或格式调整,不会影响运行时行为:

  • app/Config/App.php

  • app/Config/Autoload.php

  • app/Config/Boot/development.php

  • app/Config/Boot/testing.php

  • app/Config/Cache.php

  • app/Config/Email.php

  • app/Config/Filters.php

  • app/Config/Kint.php

  • app/Config/Modules.php

  • app/Config/Publisher.php

  • app/Config/Session.php

  • app/Views/errors/cli/error_exception.php

  • app/Views/errors/html/error_exception.php

  • composer.json

  • env

  • spark