版本 4.1.2
发布日期:2021 年 5 月 16 日
CodeIgniter 4.1.2 版发布
不兼容变更
修复了 current_url() 中的一个错误,该错误阻止了配置 indexPage 的返回值中包含该值。使用 App::$indexPage 的任何安装都应该期望 current_url() 及其所有依赖项(包括响应测试、分页器、表单辅助函数、分页器和视图解析器)返回的值发生变化。
增强功能
- 新增 HTTP 类 - Cookie和- CookieStore,用于抽象化 Web cookie。
- 新增 HTTP 测试的 - assertRedirectTo()断言。
- 新增日志处理程序 - ErrorlogHandler,可写入- error_log()。
- 实体类。新增自定义类型转换功能。 
- 路由中新增选项。 - priority选项可降低特定路由处理的优先级。
- Autoloader类现在可以加载不包含 PHP 类的文件。- Config\Autoload类的- $files属性中将列出- 非类文件。
变更
- 视图中的布局现在支持嵌套区段。 
- Response::getCookie现在返回- Cookie实例,而不是 cookie 属性数组。
- Response::getCookies现在返回- Cookie实例数组,而不是属性数组的数组。
- 为了消除现代浏览器控制台的警告,空 samesite 值在派发 cookie 时将默认为 - Lax。
- Model::errors() 和 BaseModel::errors() 现在总是返回 array;没有定义变化,但 docblock 已更新。 
- Entity::castAs的行为发生了变化。新增参数- $method。类型转换已移动到单独的处理程序中。
- 实体类。将无效值传递给时间戳转换现在会引发异常。 
- Entity::castAsJson使用外部转换处理程序- JsonCast::get。
- Entity::mutateDate使用外部转换处理程序- DatetimeCast::get。
- 为了使 - Config\**类能够从- .env获取各自的属性值,现在有必要用类的名称为属性命名空间。以前,属性名称就足够了,但现在不允许,因为它可以获取系统环境变量,如- PATH。
- 数组辅助函数 - _array_search_dot现在标记为仅- @internal使用。由于- dot_array_search使用了- _array_search_dot,所以用户不应在代码中直接使用- _array_search_dot。
- CacheInterface::getMetaData()对未命中返回- null,对命中返回包含至少- expires键的数组(设置为绝对时期过期时间)或- null(表示“永不过期”)。File、Memcached 和 Wincache 处理程序仍返回- false,这在未来的版本中将变为- null。
弃用功能
- 弃用 - CodeIgniter\View\View::$currentSection属性。
- 弃用用于 - CookieException自身异常消息的无效 cookie samesite 的语言字符串和异常。
- 弃用 CodeIgniterEntity,改用 CodeIgniterEntityEntity。 
- 弃用 - Response的与 cookie 相关的属性,改为使用- Cookie类。
- 弃用 - Security的与 cookie 相关的属性,改为使用- Cookie类。
- 弃用 - Session的与 cookie 相关的属性,改为使用- Cookie类。
- 弃用 - Security::isExpired(),改为使用- Cookie内部的过期状态。
- 弃用 - CIDatabaseTestCase,改为使用- DatabaseTestTrait。
- 弃用 - FeatureTestCase,改为使用- FeatureTestTrait。
- 弃用 - ControllerTester,改为使用- ControllerTestTrait。
- 统一并弃用 - ControllerResponse和- FeatureResponse,改用- TestResponse。
- 弃用 - Time::instance(),改用- Time::createFromInstance()(现在接受- DateTimeInterface)。
- 弃用 - IncomingRequest::removeRelativeDirectory(),改用- URI::removeDotSegments()。
- 弃用 - \API\ResponseTrait::failValidationError,改用- \API\ResponseTrait::failValidationErrors。
错误修复
- BaseConnection::query()现在对失败的查询返回- false(除非- DBDebug==true,在这种情况下会抛出异常),并根据文档为写入类型的查询返回布尔值。
有关已修复的错误列表,请参见仓库的 CHANGELOG_4.1.md。