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