バージョン 4.0.5

リリース日: 2021年1月31日

CodeIgniter4 の 4.0.5 リリース

機能強化

  • コントローラーに基づいて絶対 URL を作成する新しい URL ヘルパー関数 url_to()

  • 新しい Model オプション: $useAutoIncrement。これを false に設定すると、テーブルの各レコードに独自のプライマリキーを指定できます。1:1 の関係を実装したり、モデルに UUID を使用したりする場合に便利です。

  • 現在の URL が指定された文字列と一致するかどうかを確認できる新しい URL ヘルパー関数 url_is()

  • サービスの構成パラメータは厳密に型指定されるようになりました。これにより、誰も異なる構成インスタンスを渡すことがなくなります。追加のプロパティを持つ新しい構成を渡す必要がある場合は、特定の構成を拡張する必要があります。

  • セッションおよび CSRF クッキーに SameSite 属性を設定するためのサポートが追加されました。セキュリティと最新のブラウザバージョンとの互換性のために、デフォルト設定は Lax です。

  • Config\Mimes::guessExtensionFromType() での MIME タイプからのファイル拡張子の推測は、拡張子が提案されていない場合 (つまり、通常はアップロードされたファイルではない場合) のみ、$mimes 配列を逆方向に検索するようになりました。

  • アップロードされたファイルのファイル拡張子のゲッター関数は、異なるフォールバック値を持つようになりました (UploadedFile::getExtension() 用の UploadedFile::getClientExtension()、および 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() は非推奨となり、PSR-7 に対応するために header() が推奨されます。

  • CodeIgniter\HTTP\Message::getHeaders() は非推奨となり、PSR-7 に対応するために headers() が推奨されます。

  • Config\Cache::$storePath は非推奨となり、Config\Cache::$file['storePath'] が推奨されます。

バグ修正

  • クラスパラメータを宣言すると、データが attributes 配列に伝播されなくなるという Entity クラスのバグを修正しました。

  • 環境変数 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 を参照してください。