4.1.1 から 4.1.2 へのアップグレード

インストール方法に対応するアップグレード手順を参照してください。

破壊的変更

current_url() と indexPage

バグ により current_url() で生成される URI がプロジェクトの設定で正しくない可能性があり、特に indexPage が含まれていませんでした。 App::$indexPage を使用しているプロジェクトでは、current_url() とその依存関係(レスポンステスト、Pager、フォームヘルパー、Pager、ビューパーサーなど)からの値が変更される可能性があります。それに応じてプロジェクトを更新してください。

キャッシュキー

キャッシュハンドラーのキーの互換性が大きく異なっていました。更新されたキャッシュドライバーは、すべてのキーを検証して渡すようになり、PSR-6 の推奨事項にほぼ準拠しています。

キャッシュされたアイテムを一意に識別する少なくとも1文字の文字列です。実装するライブラリは、UTF-8 エンコーディングで A-Z、a-z、0-9、_、. の文字を任意の順序で最大 64 文字まで含むキーをサポートする必要があります。実装するライブラリは、より多くの文字とエンコーディング、またはより長い長さをサポートできますが、少なくともその最小限をサポートする必要があります。ライブラリは、必要に応じてキー文字列を独自にエスケープする責任がありますが、元の変更されていないキー文字列を返すことができる必要があります。次の文字は将来の拡張のために予約されており、実装するライブラリではサポートしてはなりません。{}()/\@:

無効なキャッシュキーを削除するようにプロジェクトを更新してください。

BaseConnection::query() の戻り値

以前のバージョンの BaseConnection::query() メソッドは、クエリが失敗した場合でも BaseResult オブジェクトを誤って返していました。このメソッドは、クエリが失敗した場合、false を返すようになり(DBDebugtrue の場合は例外をスローします)、書き込みタイプのクエリの場合はブール値を返します。query() メソッドの使用を確認し、値が Result オブジェクトではなくブール値であるかどうかを評価してください。どのクエリが書き込みタイプのクエリであるかの詳細については、BaseConnection::isWriteType() と、関連する Connection クラスの DBMS 固有のオーバーライド isWriteType() を確認してください。

破壊的強化

ConnectionInterface::isWriteType() の宣言の追加

ConnectionInterface を実装するクラスを作成した場合は、public function isWriteType($sql): bool として宣言された isWriteType() メソッドを実装する必要があります。クラスが BaseConnection を拡張する場合は、そのクラスが基本的な isWriteType() メソッドを提供するため、オーバーライドする必要がある場合があります。

テストトレイト

CodeIgniter\Test 名前空間は、開発者が独自のテストケースを作成するのを支援するために大幅に改善されました。特に、テスト拡張はトレイトに移動され、さまざまなテストケースのニーズに合わせて簡単に選択できるようになりました。CIDatabaseTestCaseFeatureTestCase クラスは非推奨となり、そのメソッドはそれぞれ DatabaseTestTraitFeatureTestTrait に移動されました。メインのテストケースを拡張し、必要なトレイトを使用するようにテストケースを更新してください。例:

<?php

use CodeIgniter\Test\DatabaseTestCase;

class MyDatabaseTest extends DatabaseTestCase
{
    public function testBadRow()
    {
        // ...
    }
}

…は以下になります。

<?php

use CodeIgniter\Test\CIUnitTestCase;
use CodeIgniter\Test\DatabaseTestTrait;

class MyDatabaseTest extends CIUnitTestCase
{
    use DatabaseTestTrait;

    public function testBadRow()
    {
        // ...
    }
}

最後に、ControllerTester は、アプローチを標準化し、更新されたレスポンステスト(下記)を活用するために、ControllerTestTrait に置き換えられました。

レスポンステスト

レスポンスをテストするためのツールが統合され、改善されました。新しい TestResponse は、ControllerResponseFeatureResponse を置き換え、両方のクラスから期待される完全なメソッドとプロパティのセットを提供します。ほとんどの場合、これらの変更は ControllerTestTraitFeatureTestCase によって「バックグラウンド」で行われますが、注意すべき変更が2つあります。

  • TestResponse$request$response プロパティは保護されており、ゲッターメソッド request()response() を通じてのみアクセスする必要があります。

  • TestResponse には getBody()setBody() メソッドがありませんが、代わりに Response メソッドを直接使用します。例:$body = $result->response()->getBody();

プロジェクトファイル

プロジェクトスペース(ルート、app、public、writable)の多数のファイルが更新されました。これらのファイルはシステムスコープ外にあるため、介入なしに変更されることはありません。プロジェクトスペースへの変更のマージを支援するサードパーティの CodeIgniter モジュールがいくつかあります。Packagist で検索

注記

バグ修正を除いて、非常にまれなケースを除き、プロジェクトスペースのファイルに加えられた変更によってアプリケーションが壊れることはありません。ここで説明されている変更はすべて、次のメジャーバージョンまでオプションであり、必須の変更は上記のセクションで説明されています。

コンテンツの変更

以下のファイルは、(非推奨化や視覚的な調整を含む)重要な変更が加えられました。更新版をアプリケーションにマージすることをお勧めします。

  • app/Config/App.php

  • app/Config/Autoload.php

  • app/Config/Cookie.php

  • app/Config/Events.php

  • app/Config/Exceptions.php

  • app/Config/Security.php

  • app/Views/errors/html/*

  • env

  • spark

全ての変更点

これは、変更が加えられたプロジェクト空間内のすべてのファイルのリストです。多くのファイルは、ランタイムに影響を与えない単純なコメントやフォーマット変更です。

  • app/Config/App.php

  • app/Config/Autoload.php

  • app/Config/ContentSecurityPolicy.php

  • app/Config/Cookie.php

  • app/Config/Events.php

  • app/Config/Exceptions.php

  • app/Config/Logger.php

  • app/Config/Mimes.php

  • app/Config/Modules.php

  • app/Config/Security.php

  • app/Controllers/BaseController.php

  • app/Views/errors/html/debug.css

  • app/Views/errors/html/error_404.php

  • app/Views/errors/html/error_exception.php

  • app/Views/welcome_message.php

  • composer.json

  • contributing/guidelines.rst

  • env

  • phpstan.neon.dist

  • phpunit.xml.dist

  • public/.htaccess

  • public/index.php

  • rector.php

  • spark