# 版本 4.2.2

发布日期：2022 年 8 月 6 日

CodeIgniter4 的 4.2.2 版本发布

## 不兼容变更

- 现在 `Services::request()` 返回 `IncomingRequest` 或 `CLIRequest`。

- `CodeIgniter\Debug\Exceptions::__construct()` 的方法签名已更改。删除了 `$request` 参数上的 `IncomingRequest` 类型提示。扩展类也应该删除该参数,以免破坏 LSP。

- `BaseBuilder.php::insert()` 和 `BaseBuilder.php::update()` 的方法签名已更改。删除了 `$set` 参数上的 `?array` 类型提示。

- 修复了一个错误,该错误会在使用页面缓存时,在 after 过滤器执行之前缓存页面。现在在 after 过滤器中添加 response headers 或更改 response body 会正确地缓存它们。

- 由于一个错误修复,现在如果第二个参数 `$len` 是奇数,带有第一个参数 `'crypto'` 的 `random_string()` 会抛出 `InvalidArgumentException`。

## 消息变更

- 修复了 `Language/en/HTTP.php` 中的 `invalidRoute` 消息。

## 变更

- 修复:`BaseBuilder::increment()` 和 `BaseBuilder::decrement()` 在查询后不重置 `BaseBuilder` 状态。

- 修复:带有前导星号(通配符)的字段的验证。

- 现在 `CLIRequest::isCLI()` 总是返回 true。

- 现在 `IncommingRequest::isCLI()` 总是返回 false。

- Vagrantfile.dist 已移动到 CodeIgniter DevKit。

## 弃用功能

- 弃用 `Services::request()` 的参数。

- 弃用 `CodeIgniter::gatherOutput()` 的第一个参数 `$cacheConfig`。

- 弃用 `Forge::_createTable()` 的第二个参数 `$ifNotExists`。

## Bug 修复

有关完整的 Bug 修复列表，请参阅仓库的 CHANGELOG_4.2.md。