版本 4.1.2

发布日期:2021 年 5 月 16 日

CodeIgniter4 的 4.1.2 版本

重大变更

修复了 一个错误,该错误在 current_url() 中,阻止了具有 indexPage 的配置将该值包含在返回值中。任何使用 App::$indexPage 的安装都应该期望 current_url() 及其所有依赖项(包括响应测试、分页器、表单助手、分页器和视图解析器)的返回值发生变化。

增强功能

  • 新的 HTTP 类,CookieCookieStore,用于抽象 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

  • ControllerResponseFeatureResponse 合并并弃用,改用 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