by lorenzo
CakePHP 2.3 は安定版になりました
2.3.0は新しいバージョンであり、2.2.5以前と完全な互換性があります。このお知らせののち、すぐにご自身のプロジェクトをアップデートしたいようなら、必要ないくつかの修正を行うために、かならずBookの移行ガイド(英語)を読んでください。
以下は変更点の概要です:
認証
AuthComponentは愛用されましたが、アクセス権なしの場合にリダイレクトするのではなく適切なエラーコードを返す、といったステートレスな認証メカニズムを実装するのがもっと簡単になりました。実行時の動作を制御するために新しくAuthComponent::$unauthorizedRedirect
プロパティが追加され、falseにセットするか、必要ならURLをセットできます。
セキュリティの向上のためBlowfishアダプターが追加され、blowfish/bcrypt を使用したパスワードのハッシュを行うようになりました。
さらに、メソッド(プロパティ)の動作を適切に反映したAuthComponent::redirectUrl
の使用が推奨され、AuthComponent::redirect()
は非推奨になりました。
Paginator
ページネーションでカスタム検索を使用したいのなら、より簡単になりました。Paginatorの設定配列にfindType
を設定するだけです。
ページ範囲外にアクセスされた場合に、最初のページや存在しないページを表示するというかつての挙動を変更し、NotFoundExceptionエラーを返すことにしました。
Paginatorの設定配列にlimit
を設定し、それがmaxLimitの値より大きい場合、maxLimitは設定した値まで引き上げられます。再指定する必要はありません。
カスタムビュークラス
組み込み済のコンテントタイプビューはお気に召しませんか?拡張が必要ですか?今までよりも簡単にできるようになりました!ビュークラス名をRequestHandlerComponent::viewClassMap()
に設定するか、RequestHandlerComponentの設定配列に直接設定できます。
PHP 5.4
もちろん引き続き5.2もサポートします。しかし、迅速開発のためにスタンドアロンphpサーバーのためのシェルコマンドをリリースすることは控えません。Console/cake server
から始めましょう。
アプリケーションの設定
設定エンジンは内部の状態を保持できるようになりました。ConfigReaderInterface::dump()
が追加され、IniReaderエンジンに対応しました。動的生成された設定を保持したい場合や、データベースに保持するカスタム設定エンジンを使用したい場合に便利です。
CakePlugin::loadAll()
に多く寄せられる不満は、プラグイン中にbootstrapファイルが存在するかどうかをチェックしていないというものです。これはすべてのエクステンションをロードするCMSのようなアプリケーションで(実装が)困難です。各プラグインが適切な設定でロードされる前提で、プラグインの設定配列に新しくignoreMissing
キーを追加しました。
CakePlugin::loadAll(array('routes' => true, 'bootstrap' => true, 'ignoreMissing' => true))
で全てのプラグインをロードし、routes.php や bootstrap.php が存在しない場合に警告を出すことはなくなります。
ネットワークとEメール
request->data('key')
でドット記法のPOSTデータを読む場合のように、request->query('key')
を使用してGETでも同様のことができるようになりました。
熟慮の末、MediaViewを非推奨にしました。全てのコードはCakeResponse::file()
に残っており、1行でファイルをブラウザーに送り、ストリームしたりダウンロードしたりできるようになっています。
CakeSocketでTLS接続のサポートを追加しました。SMTP + TLSプロトコルでメールを送信できるようになりました。さらに、CakeEmailのcontentDisposition
オプションを使用して、Content-Dispositionヘッダーをセットして送ることができるようになりました。
マイナーで重要な変更として、HttpResponseが非推奨になり、新しいクラスHttpSocketResponseに移行されました。
ビューとヘルパー
ビュークラスは再び注目され、2.1以降努力を傾けてきました。変更の一例として、要求されたブロックが空の場合にView::fetch()
がデフォルトテキストを持つようになったことです。さらに、View::prepend
という便利なメソッドが追加され、既存のブロックのあとに追加できるようになりました。ブロックが存在する場合だけ実行したい場合は、 View::startIfEmpty()
が役立つでしょう。
エレメントファイルの存在を予め確認できない場合に、View::elementExists()
と、View::element()
に追加されたignoreMissing
オプションを使用してエレメントなしの場合のエラーを抑制できます。
別のシンプルかつ重要な変更は、デフォルトレイアウトのdoctypeがHTML5になったことです。FormHelperが入力域にrequired
属性を追加できるようになったからです。
FormHelperはさらに賢くなり、電話番号やEメールの入力域で正しいinput typeを選択するようになりました。さらに、FormHelper::postLink()
でHTTP動詞を指定できるようになりました。
PaginatorHelperは待望の新しい機能が追加されました:
PaginatorHelper::numbers()
に新しいcurrentTagオプションが追加され、現在のページ番号をラップする追加のタグを指定できるようになったPaginatorHelper::prev()
とPaginatorHelper::next()
で、tagオプションをfalseにすることでラッパーを使用不可にできるようになった。さらにこれらのメソッドにdisabledTagオプションが追加された
ついに、ヘルパーに$settingsプロパティを使用して、コントローラーから配列を使って設定できるようになりました。
キャッシュ
- ファイルエンジンはデフォルトキャッシュエンジンになった。これによりAPCがインストールされていなかったり、同一のサーバで複数のアプリケーションを動作させながらキャッシュプリフィクスを変更し忘れた場合などの問題を解決する。
- 異なるフルページキャッシュを保持できるようになった。たとえば、サブドメインごとに異なるキャッシュなど。新しいキャッシュ設定のviewPrefixで行うことができる。
Configure::write(‘Cache.viewPrefix’, ‘YOURPREFIX’);
モデル
重要:Model::find('first')
はレコードが見つからなかった場合に空の配列を返します。確実にテストをアップデートしておきましょう!
- bigintデータ型、MySQLのFULLTEXTインデックスのサポートを追加
Validation::fileSize()
の追加
モデルやコントローラーをテストする場合、CakeTestCase::getMockForModel()
を使って素早く、正しいエイリアスやテーブル名を持ち、ClassRegistryに登録されるモデルのモックを生成できるようになりました。
2.3.0-RC2 以降の変更
AuthComponent::redirect()
がAuthComponent::redirectUrl()
に変更された- 電話番号とEメールのinput typeの推測の追加
- レンダリング時にビューオブジェクト構築のための
Controller::_getViewObject()
メソッド - チェックボックスに「required」属性を追加しないこと(意図的な場合を除く)
- Security.level を core.php から削除
- デフォルトのホームページでPDOエラーを明示
AuthComponent::$unauthorizedRedirect
にURLを指定できる- CakePluginのインクルードエラーを無視する機能を追加
- ラジオボタンのオプションに文字列の配列として
between
を追加
2.3.0 の全て変更点についてはchangelog[3] をご覧ください。
2.2.x 系の変更
- セッションを破棄する前に確実にセッションが開始されるようにする
- テーマ名は一貫して語形変化させる。これは、すべてのテーマは他のフォルダと同様、大文字で始めなければならないという意味です。
HttpResponse::isOK()
にOKまたは成功時のHTTPコード200-206を追加- HABTM関連はテーブルが存在する場合だけbakeされる
- コントローラーのbakeで–adminのサポートを追加
- XMLファイルのフェッチ時のリダイレクト方法を修正
- GETフォームでTokenフィールドの追加
afterFind()
で関連レコードを削除できるようになった。afterFind
コールバックで空の配列を渡すか0番目の結果を解除することで結果セットから完全に削除できるようになった
changelog[4] には 2.2.6 の変更点が全て記載されています。
コミット、チケット、ドキュメントの編集ほか、このフレームワークに貢献してくれるすべての皆さんに深謝します。あなたがいなければCakePHPは存在しません。
パッケージリリースのダウンロード
リンク