|
| 1 | +5.1 移行ガイド |
| 2 | +################### |
| 3 | + |
| 4 | +5.1.0 リリースは 5.0 と後方互換性があります。 |
| 5 | +新機能が追加され、新たな非推奨機能が導入されます。 |
| 6 | +5.x で非推奨とされた機能は 6.0.0 で削除されます。 |
| 7 | + |
| 8 | +動作の変更 |
| 9 | +================ |
| 10 | + |
| 11 | +- Connectionは、設定に ``read`` または ``write`` キーが存在する場合、その値に関係なく一意の読み取りおよび書き込みドライバーを作成するようになりました。 |
| 12 | +- FormHelper は、 ``required`` 属性が設定されている入力要素に対して ``aria-required`` 属性を生成しなくなりました。 |
| 13 | + これらの要素では ``aria-required`` 属性は冗長であり、HTML のバリデーション警告を引き起こします。 |
| 14 | + スタイリングやスクリプトで ``aria-required`` 属性を使用している場合は、アプリケーションを更新する必要があります。 |
| 15 | +- 重複した名前でアソシエーションを追加しようとすると例外が発生するようになりました。 |
| 16 | + 必要に応じて ``$table->associations()->has()`` を使って条件付きでアソシエーションを定義できます。 |
| 17 | +- テキストユーティリティおよび TextHelper の省略や最大長に関するメソッドは、 |
| 18 | + ``...`` の代わりに UTF-8 文字の ``ellipsis`` を使用するようになりました。 |
| 19 | +- ``TableSchema::setColumnType()`` は、指定したカラムが存在しない場合に例外をスローするようになりました。 |
| 20 | +- ``PluginCollection::addPlugin()`` は、同じ名前のプラグインがすでに追加されている場合に例外をスローするようになりました。 |
| 21 | +- ``TestCase::loadPlugins()`` は、以前にロードされたプラグインをすべてクリアするようになりました。 |
| 22 | + そのため、以降のテストで必要なすべてのプラグインを指定する必要があります。 |
| 23 | +- ``groups`` を使用する ``Cache`` 設定用のハッシュアルゴリズムが変更されました。 |
| 24 | + すべてのキーに対して新しいグループプレフィックスのハッシュが生成されるため、キャッシュミスが発生します。 |
| 25 | + 完全にコールドキャッシュとなるのを避けるため、段階的なデプロイを検討してください。 |
| 26 | +- ``FormHelper::getFormProtector()`` は、従来の型に加えて ``null`` を返すようになりました。 |
| 27 | + これにより動的なビューコードがエラーになりにくくなりますが、ほとんどのアプリケーションには影響しません。 |
| 28 | +- ``Table::findList()`` の ``valueSeparator`` のデフォルト値が ``;`` から半角スペースに変更されました。 |
| 29 | +- ``ErrorLogger`` は ``Psr\Log\LogTrait`` を使用するようになりました。 |
| 30 | +- ``Database\QueryCompiler::$_orderedUnion`` は削除されました。 |
| 31 | + |
| 32 | +非推奨 |
| 33 | +============ |
| 34 | + |
| 35 | +I18n |
| 36 | +---- |
| 37 | + |
| 38 | +- ``_cake_core_`` キャッシュ設定キーは ``_cake_translations_`` に変更されました。 |
| 39 | + |
| 40 | +Mailer |
| 41 | +------ |
| 42 | + |
| 43 | +- ``Mailer::setMessage()`` は非推奨となりました。このメソッドは直感的でない動作をし、利用頻度も非常に低いためです。 |
| 44 | + |
| 45 | + |
| 46 | +新機能 |
| 47 | +============ |
| 48 | + |
| 49 | +Cache |
| 50 | +----- |
| 51 | + |
| 52 | +- ``RedisEngine`` で Redis への TLS 接続を有効にする ``tls`` オプションがサポートされるようになりました。。 |
| 53 | + ``ssl_ca``、``ssl_cert``、``ssl_key`` オプションを使用して Redis 用の TLS コンテキストを定義できます。 |
| 54 | + |
| 55 | +Command |
| 56 | +------- |
| 57 | + |
| 58 | +- ``bin/cake plugin list`` が追加され、利用可能なすべてのプラグイン、そのロード設定、およびバージョンを一覧表示できるようになりました。 |
| 59 | +- オプションの ``Command`` 引数に ``default`` 値を指定できるようになりました。 |
| 60 | +- ``BannerHelper`` が追加されました。このコマンドヘルパーは、テキストをカラフルな背景と余白付きのバナーとして整形できます。 |
| 61 | +- ``ConsoleOutput`` に ``info.bg``、``warning.bg``、``error.bg``、``success.bg`` のデフォルトスタイルが追加されました。 |
| 62 | + |
| 63 | +Console |
| 64 | +------- |
| 65 | + |
| 66 | +- ``Arguments::getBooleanOption()`` および ``Arguments::getMultipleOption()`` が追加されました。 |
| 67 | +- ``Arguments::getArgument()`` は、未知の引数名が指定された場合に例外をスローするようになりました。 |
| 68 | + これにより、オプション名と引数名の混同を防ぐことができます。 |
| 69 | + |
| 70 | + |
| 71 | +Controller |
| 72 | +---------- |
| 73 | + |
| 74 | +- コンポーネントでも、コントローラやコマンドと同様に、DIコンテナを使用して依存関係を解決し、コンストラクタの引数として受け取れるようになりました。 |
| 75 | + |
| 76 | +Core |
| 77 | +---- |
| 78 | + |
| 79 | +- ``PluginConfig`` が追加されました。このクラスを使用すると、利用可能なすべてのプラグイン、そのロード設定、およびバージョンを取得できます。 |
| 80 | +- ``toString``、 ``toInt``、 ``toBool`` 関数が追加されました。これらの関数は、リクエストデータや他の入力値を型安全にキャストし、変換に失敗した場合は ``null`` を返します。 |
| 81 | +- ``pathCombine()`` が追加され、重複や末尾のスラッシュを気にせずパスを組み立てられるようになりました。 |
| 82 | +- ``BaseApplication`` および ``BasePlugin`` クラスに新しい ``events`` フックが追加されました。 |
| 83 | + このフックは、アプリケーションのグルーバルイベントリスナーを登録する推奨方法です。詳しくは :ref:`Registering Listeners <registering-event-listeners>` を参照してください。 |
| 84 | + |
| 85 | +Database |
| 86 | +-------- |
| 87 | + |
| 88 | +- ``point``、 ``linestring``、 ``polygon``、 ``geometry`` 型のサポートが追加されました。 |
| 89 | + これらの型は地理空間やデカルト座標を扱う際に便利です。SQLite のサポートは内部的にテキストカラムを使用しており、 |
| 90 | + データを地理空間値として操作するための関数はありません。 |
| 91 | +- ``SelectQuery::__debugInfo()`` に、クエリがどのコネクションロール用のものかが含まれるようになりました。 |
| 92 | +- ``SelectQuery::intersect()`` および ``SelectQuery::intersectAll()`` が追加されました。 |
| 93 | + これらのメソッドにより、 ``INTERSECT`` および ``INTERSECT ALL`` 結合を使用したクエリを記述できるようになりました。 |
| 94 | +- ``intersect``、 ``intersect-all``、および ``set-operations-order-by`` 機能がサポートされるようになりました。 |
| 95 | +- 4.x に存在したバッファリングなしでレコードを取得する機能が復活しました。 |
| 96 | + ``SelectQuery::enableBufferedResults()``、` `SelectQuery::disableBufferedResults()``、 |
| 97 | + ``SelectQuery::isBufferedResultsEnabled()`` メソッドが再追加されました。 |
| 98 | + |
| 99 | +Datasource |
| 100 | +---------- |
| 101 | + |
| 102 | +- ``RulesChecker::remove()``、 ``removeCreate()``、 ``removeUpdate()``、および |
| 103 | + ``removeDelete()`` メソッドが追加されました。これらのメソッドにより、ルールを名前で削除できるようになりました。 |
| 104 | + |
| 105 | + |
| 106 | +Http |
| 107 | +---- |
| 108 | + |
| 109 | +- ``SecurityHeadersMiddleware::setPermissionsPolicy()`` が追加されました。このメソッドにより、``permissions-policy`` ヘッダー値を定義できるようになりました。 |
| 110 | +- ``Client`` はリクエスト送信時に ``HttpClient.beforeSend`` および ``HttpClient.afterSend`` イベントを発火するようになりました。 |
| 111 | + これらのイベントを利用して、ログ記録、キャッシュ、テレメトリ収集などを行うことができます。 |
| 112 | +- ``Http\Server::terminate()`` が追加されました。 |
| 113 | + このメソッドは ``Server.terminate`` イベントを発火し、fastcgi 環境ではレスポンス送信後にロジックを実行できます。 |
| 114 | + その他の環境では ``Server.terminate`` イベントはレスポンス送信 *前* に実行されます。 |
| 115 | + |
| 116 | +I18n |
| 117 | +---- |
| 118 | + |
| 119 | +- ``Number::formatter()`` および ``currency()`` は、丸め方法を上書きする ``roundingMode`` オプションを受け付けるようになりました。 |
| 120 | +- ``toDate`` および ``toDateTime`` 関数が追加されました。これらの関数は、リクエストデータや他の入力値を型安全にキャストし、変換に失敗した場合は ``null`` を返します。 |
| 121 | + |
| 122 | +ORM |
| 123 | +--- |
| 124 | + |
| 125 | +- アソシエーションのファインダークエリで ``preserveKeys`` オプションを設定できるようになりました。 |
| 126 | + これにより、 ``formatResults()`` と組み合わせて、アソシエーションのファインダー結果を連想配列として返すことができます。 |
| 127 | +- 名前に ``json`` を含む SQLite カラムを ``JsonType`` にマッピングできるようになりました。 |
| 128 | + この機能は現時点ではオプトインであり、アプリで ``ORM.mapJsonTypeForSqlite`` 設定値を ``true`` にすることで有効になります。 |
| 129 | + |
| 130 | +TestSuite |
| 131 | +--------- |
| 132 | + |
| 133 | +- CakePHP およびアプリのテンプレートは PHPUnit ``^10.5.5 || ^11.1.3"`` を使用するように更新されました。 |
| 134 | +- ``ConnectionHelper`` のメソッドがすべて static になりました。このクラスは状態を持たず、メソッドが static に更新されました。 |
| 135 | +- ``LogTestTrait`` が追加されました。この新しいトレイトにより、テスト内でログを簡単にキャプチャし、ログメッセージの有無をアサートできるようになりました。 |
| 136 | +- ``IntegrationTestTrait::replaceRequest()`` が追加されました。 |
| 137 | + |
| 138 | +Utility |
| 139 | +------- |
| 140 | + |
| 141 | +- ``Hash::insert()`` および ``Hash::remove()`` は、 ``array`` データに加えて ``ArrayAccess`` オブジェクトも受け付けるようになりました。 |
| 142 | + |
| 143 | +Validation |
| 144 | +---------- |
| 145 | + |
| 146 | +- ``Validation::enum()`` および ``Validator::enum()`` が追加されました。これらのバリデーションメソッドにより、Backed Enum 値の検証が簡単になりました。 |
| 147 | +- ``Validation::enumOnly()`` および ``Validation::enumExcept()`` が追加されました。これらのメソッドにより、特定のケースの検証や、Backed Enum 値のバリデーションをさらに簡単に行うことができます。 |
| 148 | + |
| 149 | +View |
| 150 | +---- |
| 151 | + |
| 152 | +- View cells は、アクションの前後で ``Cell.beforeAction`` および ``Cell.afterAction`` イベントを発火するようになりました。 |
| 153 | +- ``NumberHelper::format()`` は、丸め方法を上書きする ``roundingMode`` オプションを受け付けるようになりました。 |
| 154 | + |
| 155 | +Helpers |
| 156 | +------- |
| 157 | + |
| 158 | +- ``TextHelper::autoLinkUrls()`` に、リンクラベルの表示を改善するためのオプションが追加されました: |
| 159 | + * ``stripProtocol``: リンク先の先頭から ``http://`` や ``https://`` を取り除きます。デフォルトは無効です。 |
| 160 | + * ``maxLength``: リンクラベルの最大長を指定します。デフォルトは無効です。 |
| 161 | + * ``ellipsis``: リンクラベルの末尾に付加する文字列です。デフォルトはUTF8バージョンです。 |
| 162 | +- ``HtmlHelper::meta()`` で ``meta('csrfToken')`` を使うことで、現在の CSRF トークンを含む meta タグを生成できるようになりました。 |
0 commit comments