CakePHP 3.8 は 3.7 の API の完全上位互換です。 このページでは、3.8 の変更と改善についてのアウトラインを紹介します。
3.8.x にアップグレードするには、次の Composer コマンドを実行してください。
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 になります。
CollectionTrait はクローンを作成するのに newCollection メソッドを使用するようになりました。
これにより、サブクラスは Collection を使用する代わりに、コレクションメソッドに
それらのインスタンスを作成させることができます。
Command::executeCommand() が追加されました。このメソッドは現在のコマンドから
別のコマンドを呼び出すのを簡単にします。
Cake\Datasource\ModelAwareTrait::get() は完全修飾クラス名で
モデルクラスを見つけることができるようになり、
ArticleTable::class を get() のパラメーターとして使用できるようになりました。
Email::setHeaders() と Email::addHeaders() は、同じ名前の複数のヘッダーを
設定できるようになりました。そのため、上記の関数に渡される配列引数の中の特定のヘッダーキーの値は
配列でなければなりません。
例: $email->addHeaders(['og:tag' => ['foo', 'bar']]);
Response::withCookieCollection() が追加されました。
Cake\ORM\Locator\TableLocator はテーブルクラスを別の場所に配置できるようになりました。
コンストラクターに名前空間のリストを提供するか、 addLocation メソッドを使用することができます。
Validator::notEmptyString() 、 notEmptyArray() 、 notEmptyFile() 、
notEmptyData() 、 notEmptyTime() および notEmptyDateTime() が追加されました。
3.7  で追加された allowEmpty* メソッドを補完するものとして機能します。
Validation::mimeType() は大文字小文字を区別しないで mime-types のチェックを比較するようになりました。
Validation::dateTime() は iso8601 フォーマットをサポートします。
ラジオボタンは、複雑なオプション定義の中で label キーを使うことによって、
生成されたラベルをカスタマイズすることができます。
このキーはトップレベルのオプションで定義された label キーの代わりに使われます。