3.8 移行ガイド
CakePHP 3.8 は 3.7 の API の完全上位互換です。 このページでは、3.8 の変更と改善についてのアウトラインを紹介します。
3.8.x にアップグレードするには、次の Composer コマンドを実行してください。
bash
php composer.phar require --update-with-dependencies "cakephp/cakephp:3.8.*"非推奨
Validator::allowEmptyString()、allowEmptyArray()、allowEmptyFile()、allowEmptyDate()、allowEmptyTime()、およびallowEmptyDateTime()は、$field, $when, $messageシグネチャ使用時に 非推奨警告を発するようになりました。代わりに$field, $message, $whenを 使用するべきです。EntityTrait::visibleProperties()は、非推奨になります。 代わりに、getVisible()を使用してください。
振る舞いの変更
Cake\ORM\Table::findOrCreate()は、検索が失敗し$searchから作成されたエンティティーに 無効なデータが含まれる場合、PersistenceFailedExceptionを投げるようになりました。 以前は無効なエンティティーが保存されていました。$modelClassプロパティーが設定されたCommandクラスは、そのモデルをオートロードします。 空の引数を指定した手動のloadModel()の呼び出しはもう必要ありません。これにより、 シェルクラスの動作と一貫性が保たれます。Cake\I18n\Time、FrozenTime、DateおよびFrozenDateのデフォルトフォーマットは、 デンマーク語や他のヨーロッパのロケールにおけるローカリゼーション問題を解決するyyyy-MM-dd'T'HH':'mm':'ssxxxになります。
新機能
Collection
CollectionTraitはクローンを作成するのにnewCollectionメソッドを使用するようになりました。 これにより、サブクラスはCollectionを使用する代わりに、コレクションメソッドに それらのインスタンスを作成させることができます。
Console
Command::executeCommand()が追加されました。このメソッドは現在のコマンドから 別のコマンドを呼び出すのを簡単にします。
Datasource
Cake\Datasource\ModelAwareTrait::get()は完全修飾クラス名で モデルクラスを見つけることができるようになり、ArticleTable::classをget()のパラメーターとして使用できるようになりました。
Email
Email::setHeaders()とEmail::addHeaders()は、同じ名前の複数のヘッダーを 設定できるようになりました。そのため、上記の関数に渡される配列引数の中の特定のヘッダーキーの値は 配列でなければなりません。 例:$email->addHeaders(['og:tag' => ['foo', 'bar']]);
Http
Response::withCookieCollection()が追加されました。
ORM
Cake\ORM\Locator\TableLocatorはテーブルクラスを別の場所に配置できるようになりました。 コンストラクターに名前空間のリストを提供するか、addLocationメソッドを使用することができます。
Validation
Validator::notEmptyString()、notEmptyArray()、notEmptyFile()、notEmptyData()、notEmptyTime()およびnotEmptyDateTime()が追加されました。 3.7 で追加されたallowEmpty*メソッドを補完するものとして機能します。Validation::mimeType()は大文字小文字を区別しないで mime-types のチェックを比較するようになりました。Validation::dateTime()はiso8601フォーマットをサポートします。
View
- ラジオボタンは、複雑なオプション定義の中で
labelキーを使うことによって、 生成されたラベルをカスタマイズすることができます。 このキーはトップレベルのオプションで定義されたlabelキーの代わりに使われます。