版本 4.1.2
发布日期:2021 年 5 月 16 日
CodeIgniter4 的 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. 时间戳转换现在在传递无效值时抛出异常
Entity::castAsJson使用外部转换处理程序JsonCast::get。Entity::mutateDate使用外部转换处理程序DatetimeCast::get。为了使
Config\**类从.env获取其各自属性的值,现在有必要使用类的名称对属性进行命名空间。以前,属性名称就足够了,但现在不允许,因为它可以获取系统环境变量,例如PATH。数组助手
_array_search_dot现在标记为@internal使用。由于这由dot_array_search使用,因此用户不应在代码中直接使用_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。