版本 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。