版本 4.0.5
发布日期:2021 年 1 月 31 日
CodeIgniter 4.0.5 版发布
增强功能
新增 URL 辅助函数
url_to()
,可基于控制器创建绝对 URLs。新增 Model 选项:
$useAutoIncrement
,设置为false
时,允许你为表中的每条记录提供自己的主键。这在实现 1:1 关系或在模型中使用 UUID 时很方便。新增 URL 辅助函数
url_is()
,可检查当前 URL 是否匹配给定字符串。服务类的参数类型现在进行了严格定义。这将确保不会传入其他配置实例。如果需要传递带有额外属性的新配置,则需要扩展特定的配置类。
支持为 Session 和 CSRF cookie 设置 SameSite 属性。出于安全和与最新浏览器版本的兼容性考虑,默认设置为
Lax
。在
Config\Mimes::guessExtensionFromType()
中,现在只有在没有提议扩展名时(即通常不用于上传的文件),才会反向搜索$mimes
数组。上传文件的文件扩展名的 getter 函数现在具有不同的回退值(
UploadedFile::getClientExtension()
用于UploadedFile::getExtension()
,''
用于UploadedFile::guessExtension()
)。这是一个安全修复,使该过程不太依赖客户端。Cache
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。