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