CakePHPの次期バージョンがα版になったことをお知らせします。このバージョンではCakePHPをとても簡単かつ面白みのあるフレームワークにするための幾つかの機能が追加されています。コンテントタイプ固有のページ、改善されたエラーメッセージ、ビューブロック、新しいコールバックシステムなどチェックしてみてください。
CakePHP2.1には、合計で230以上のコミットと15の新機能・拡張が行われました。完全なリストはchangelogページで閲覧できます。以下はこのバージョンのハイライトです:
コンテントタイプビュー
2つの新しいタイプのビュークラスが追加されました。JsonViewとXmlViewにより、XMLとJSONのビューの作成がより簡単になります。
アプリケーション内でRequestHandlerComponentを利用可能にし、xmlもしくはjson拡張子を利用可能にすることで、自動的にこの新しいクラスの影響力を体感できます。データビューの生成には2つの方法があります。ひとつは_serializeキーを使用する方法、もうひとつは通常のビューファイルを作成する方法です。
これにより、コンテントタイプ別のページをとっても簡単に作成でき、自動的に正しいmimetypeのエラーレスポンスが行われます。
ビューの拡張
ビュークラスに view/element/layout を他のファイルを使用してラップまたは拡張する新しい方式を導入しました。これは「サブレイアウト」の考え方を導入したもので、ビューをこれまで以上に柔軟にし、ビューブロックを使用して実装されています。
ビューブロックはビューで区切りやブロックを作成する柔軟性のある方法です。ブロックは$scripts_for_layoutや$content_for_layoutを置き換える堅牢で柔軟性のあるAPIです。
たとえばブロックはサイドバーやアセットをロードするレイアウトの上部/下部領域などを実装するのに最適です。
Plugin.view
すべての レイアウト/ビュー/エレメントの名前はPlugin.viewを使用してプラグインビューを示す方法が推奨されます。View::element()でpluginオプションを指定する方法は非推奨です。
エラーの改善
debug() 関数の出力がきれいになり読みやすくなりました。例外ページではインタラクティブなスタックトレースを追加しています。各トレースポイントをクリックしてその時点での変数の状態を調べることができます。先に述べたとおり、CakePHPはコンテントタイプ固有のエラーページを返します。
汎用イベントシステム
新しい汎用イベントシステムが構築され、コールバックが割り当てられる方式に取って代わりました。アプリケーションのコードに変更の必要はありません。自分のイベントを割り当て、自由にコールバックにアタッチできるようになりました。プラグイン内部のコミュニケーションや、クラスとイベントを分離するのに便利です。
テスト
$test以外にもデータソース内にフィクスチャを作成できます。ClassRegistryまたは他のデータソースを使用してロードされたモデルはtest_月のデータソース名を取得します。(たとえば、データソースがmasterの場合は、テストスイートはtest_masterの使用を試みます。)
新しいTestShellが追加されました。ユニットテスト実行中のキー入力要求が減っており、UIベースのファイルパスを提供します。
Console/cake test app/Model/Post.php
Console/cake test app/Controller/PostsController.php
ヘルパー
- エレメント内で
<!--nocache-->タグが正しく動作するようになった - フォームヘルパーはdisabledフィールドを安全なフィールドハッシュから除外するようになった。
SecurityComponentと連携してdisabledフィールドの入力を容易にする。 - ラジオボタンの入力で
betweenオプションが使用されるときの動作が変わる。betweenの値はlegendと最初の入力要素の間に配置される。 - チェックボックスの入力で
hiddenFieldオプションに0だけでなく固有の値(’N’など)を指定できるようになった - 日付と時刻の入力で
for属性は最初に生成された入力を反映する。これによりfor属性は、生成された日付と時刻の入力を変更するようになる。
コールバックの優先順位
ヘルパー、ビヘイビア、コンポーネントのコールバックは優先順位をサポートするようになり、コールバックが呼ばれる際の優先順位を簡単に管理できるようになりました。
以降数時間2.1のオンラインドキュメントのために作業したのち、残りの機能の作成をすぐに終わらせる予定です。パッチやドキュメントの変更や新しいチケットによって成長し続けるCakePHPコミュニティに感謝しています。あなたがいなければ、CakePHPは存在しません。
訳注:技術検証が追いついていないので、ミスがあるかもしれません。後ほど修正する可能性があります。あしからずご了承ください。