CakePHP 3.3 は、3.2 の API の完全上位互換です。 このページでは、3.3 の変更と改善についてのアウトラインを紹介します。
Router::mapResources()
は非推奨になりました。ルーティングスコープと
$routes->resources()
を代わりに使用してください。Router::redirect()
は非推奨になりました。ルーティングスコープと
$routes->redirect()
を代わりに使用してください。Router::parseNamedParams()
は非推奨になりました。
名前付きパラメーターの後方互換性は 4.0.0 で削除されます。Cake\Http\Client\Response
の以下のメソッドは PSR-7 インターフェイスメソッドと
重複しているため非推奨になりました。statusCode()
の代わりに getStatusCode()
を使用してください。encoding()
の代わりに getEncoding()
を使用してください。header()
の代わりに getHeaderLine()
を使用してください。cookie()
の代わりに getCookie()
を使用してください。version()
の代わりに getProtocolVersion()
を使用してください。RequestActionTrait
は非推奨になりました。
代わりに ビューセル を使用するようにあなたのコードを修正してください。mcrypt
拡張が非推奨なため、 Cake\\Utility\\Crypto\\Mcrypt
エンジンは非推奨になりました。代わりに openssl
と
Cake\Utility\Crypto\Openssl
を使用してください。以下の変更は、API 互換性はありますが、あなたのアプリケーションに 影響を及ぼし得る振る舞いのわずかな差異があります。
:
が含まれていることを意味します。
例: 2015-11-06T00:00:00+03:00
Controller::referer()
は、アプリケーションのローカル URL を生成するときに、
一貫して、アプリケーションのベースパスを省略します。
URL 配列はそうではありませんでしたが、以前の URL 文字列は、
ベースパスを前に付けなければなりませんでした。ErrorController
は、 AppController
を継承しないため、
Auth
と Security
コンポーネントを無効にしなくなりました。
もし、イベントを経由してこれらのコンポーネントを有効にしていたら、
コードを更新する必要があります。Entity::clean
は、元の値を削除し、保存時にクリアします。この振る舞いには、
保存の後にエンティティーの元の状態が維持されるべきではなく、代わりに、エンティティーの
新しい状態を反映するべきであるというバグがありました。ディスパッチャーフィルターの非推奨と並行して、PSR-7 ミドルウェアのサポートが 追加されました。ミドルウェアは、CakePHP 3.3.0 のオプトインのコンポーネントである 新しい HTTP スタックの一部です。新しい HTTP スタックを使用することで、 次のような機能を利用することができます。
Http\Client
から取得したレスポンスとあなたのアプリケーションが
生成したレスポンスの両方で同じレスポンスオブジェクトのメソッドを利用。詳細と既存のアプリケーションへの新しい HTTP スタックの追加方法は、 ミドルウェア の章と 既存アプリケーションへの新しい HTTP スタック追加 セクションを ご覧ください。
Cake\Network\Http\Client
は Cake\Http\Client
に移動しました。
そのリクエストとレスンポンスオブジェクトは PSR-7 インターフェイス を実装しています。
Cake\Http\Client\Response
の幾つかのメソッドは非推奨です。
詳細は、上記をご覧ください。
JsonType
が追加されました。この新しい型は、
MySQL と Postgres の中で使用可能なネイティブの JSON 型を
使用することができます。他のデータベースプロバイダでは、
json
型は TEXT
のカラムにマップされます。Association::unique()
が追加されました。このメソッドは、
対象のテーブルの unique()
メソッドを中継しますが、
アソシエーション条件が適用されることを保証します。isUnique
ルールはアソシエーション条件を適用します。toArray()
を使用して配列に変換されません。
代わりに、 jsonSerialize()
メソッドは、すべての関連する
エンティティー上で呼び出されます。これは、エンティティーの JSON 表現で
どのプロパティーが公開されているか、より多くの柔軟性と制御を提供します。Table::newEntity()
と Table::patchEntity()
は、
'associated' キーの中で未知のアソシエーションがあるとき例外が発生します。RulesChecker::validCount()
が追加されました。この新しいメソッドは、
エンティティーが持つ関連するレコードの数にルールを適用することができます。existsIn
ルールに allowNullableNulls
オプションが追加されました。
このオプションは、いくつかのカラムが null である場合にルールを
通過することができます。単一のコントローラーのアクション/ビューテンプレートに 複数のクエリーで paginate することができます。 詳細は、 複数クエリーのページネーション セクションをご覧ください。
CLI 環境でキャッシュデータをよりよく管理するために、 シェルコマンドで、キャッシュデータを消去するための方法が 追加されました。
// 一つの設定のキャッシュをクリア
bin/cake cache clear <configname>
// すべての設定のキャッシュをクリア
bin/cake cache clear_all
schemaDefault
オプションを false に設定することで、
この動作を無効にすることができます。Validator::requirePresence()
, Validator::allowEmpty()
そして Validator::notEmpty()
フィールドのリストを受け入れます。
これで、より簡潔に必要なフィールドを定義することができます。StringTemplate::format()
は 、リクエストされたテンプレートが
見つからない場合、 null
を返す代わりに例外をスローします。
Collection::transpose()
が追加されました。このメソッドは、
行と列が同じ長さの行列の行と列を入れ替えることができます。ErrorController
は、エラーページで
コンテンツタイプのネゴシエーションに必要な Accept
ヘッダーを
有効にするために RequestHandlerComponent
をロードします。Router::parse()
, RouteCollection::parse()
そして
Route::parse()
は、 $method
引数が追加されました。
デフォルトは、'GET' です。この新しいパラメーターは、
グローバルな状態への依存と、 PSR-7 に必要な動作の統合を削減します。_welcome
メソッドは呼び出されません。
それらは、 requested
パラメーターセットを持つことになります。Shell::err()
は、テキストに「error」スタイルを適用します。
デフォルトのスタイルは、赤色のテキストです。Request::is()
と Request::addDetector()
は検出器における
追加の引数をサポートしています。これは、検出器の callable で、
追加のパラメーターを操作することができます。