版本 4.0.5

发布日期:2021 年 1 月 31 日

CodeIgniter4 的 4.0.5 版本

增强功能

  • 新的 URL 助手函数 url_to(),它根据控制器创建绝对 URL。

  • 新的模型选项:$useAutoIncrement,当设置为 false 时,允许您为表中的每条记录提供自己的主键。当我们想要实现 1:1 关系或对我们的模型使用 UUID 时,这很方便。

  • 新增了一个 URL 辅助函数 url_is(),它允许您检查当前 URL 是否与给定的字符串匹配。

  • 服务现在对其配置参数进行了严格的类型提示。这将确保没有人会传递不同的配置实例。如果您需要传递一个具有附加属性的新配置,则需要扩展该特定配置。

  • 添加了对在 Session 和 CSRF cookie 上设置 SameSite 属性的支持。出于安全性和与最新浏览器版本的兼容性考虑,默认设置为 Lax

  • Config\Mimes::guessExtensionFromType() 中从 mime 类型猜测文件扩展名现在仅在没有提出扩展名的情况下(即通常不适用于上传的文件)反向搜索 $mimes 数组。

  • 上传文件的扩展名 getter 函数现在具有不同的回退值(UploadedFile::getClientExtension() 用于 UploadedFile::getExtension()'' 用于 UploadedFile::guessExtension())。这是一个安全修复,使该过程对客户端的依赖性降低。

  • 缓存 FileHandler 现在允许通过 Config\Cache 设置文件权限模式。

更改

  • 定义在 system/Language/en/ 中的系统消息现在严格用于内部框架使用,并且不受向后兼容性 (BC) 承诺的覆盖。用户可以在其应用程序中使用这些消息,但风险自负。

弃用

  • 弃用 BaseCommand::getPad(),改用 BaseCommand::setPad()

  • 弃用 CodeIgniter\Controller::loadHelpers(),改用 helper() 函数。

  • 弃用 Config\Format::getFormatter(),改用 CodeIgniter\Format\Format::getFormatter()

  • 弃用 CodeIgniter\Security\Security::CSRFVerify(),改用 CodeIgniter\Security\Security::verify()

  • 弃用 CodeIgniter\Security\Security::getCSRFHash(),改用 CodeIgniter\Security\Security::getHash()

  • 弃用 CodeIgniter\Security\Security::getCSRTokenName(),改用 CodeIgniter\Security\Security::getTokenName()

  • 已弃用 Config\App::$CSRFTokenName,建议使用 Config\Security::$tokenName

  • 已弃用 Config\App::$CSRFHeaderName,建议使用 Config\Security::$headerName

  • 已弃用 Config\App::$CSRFCookieName,建议使用 Config\Security::$cookieName

  • 已弃用 Config\App::$CSRFExpire,建议使用 Config\Security::$expire

  • 已弃用 Config\App::$CSRFRegenerate,建议使用 Config\Security::$regenerate

  • 已弃用 Config\App::$CSRFRedirect,建议使用 Config\Security::$redirect

  • 已弃用 Config\App::$CSRFSameSite,建议使用 Config\Security::$samesite

  • 已弃用 migrate:create 命令,建议使用 make:migration 命令。

  • 已弃用 CodeIgniter\Database\ModelFactory,建议使用 CodeIgniter\Config\Factories::models()

  • 已弃用 CodeIgniter\Config\Config,建议使用 CodeIgniter\Config\Factories::config()

  • 已弃用 CodeIgniter\HTTP\Message::getHeader(),建议使用 header() 以便准备 PSR-7

  • 已弃用 CodeIgniter\HTTP\Message::getHeaders(),建议使用 headers() 以便准备 PSR-7

  • 已弃用 Config\Cache::$storePath,建议使用 Config\Cache::$file['storePath']

已修复的错误

  • 修复了 Entity 类中的一个错误,该错误导致声明类参数会阻止数据传播到 attributes 数组。

  • 处理环境变量 encryption.key 的方式已更改。以前,显式函数调用,例如 getenv('encryption.key')env('encryption.key'),其中值具有特殊前缀 hex2bin:,会返回自动转换的二进制字符串。现在已更改为仅返回带有前缀的字符字符串。此更改是由于 Windows 平台上环境变量中处理二进制字符串的不兼容性。但是,使用 Encryption 类配置访问 $key 仍然保持不变,并且仍然返回二进制字符串。

  • Config\Services(在 **app/Config/Services.php** 中)现在扩展了 CodeIgniter\Config\BaseService 以允许正确发现第三方服务。

有关已修复错误的完整列表,请参阅仓库的 CHANGELOG_4.0.md