by lorenzo
CakePHP 3.0 の最初の開発プレビュー版以降数ヶ月、ORMのコミュニティ・フィードバックや、最初の開発プレビューに組み込まれなかった機能の組み込みに一生懸命でした。
CakePHP 3.0 開発プレビュー2の新機能
- CakePHPはPSR-4 オートローダー基準を採用。アップデートの際には、composerについても
composer self-update
を使用してアップデートしてください - CakePHPとアプリケーションのスケルトンのディレクトリ構成は、PSR-4のもとに簡潔になった
- AclComponentは削除された。プラグインになって帰ってきます
- TestShellとwebrunnerは、CLIによるphpunit、VisualPHPUnitのほうを採用することにしたため削除された
- ビューテンプレートはView/からTemplate/に移動した。これによりView/ディレクトリの内容はビュークラスとヘルパーのみになった
- HtmlHelper、FormHelper、SessionHelperは一貫して文字列テンプレートを使用するようになった
- ID属性はキャメルケースに変わって
-
を使用して生成するようになった。CSSセレクタの規約に沿って標準化された - APIドキュメントとcookbookに多くの新しいセクションが追加され、改善された
- スッキャフォールドは削除された。改善された動的スッキャフォールディングは3.0系と互換性のあるCRUDプラグイン[2]として提供され、コントローラが行う反復の多い処理から解放してくれる
- UpgradeShellはプラグインとして独立した
- エンティティ、テーブル、クエリのような複雑なオブジェクトのデバッグ出力が改良された。debug()関数を使用した場合にどのようなデータを出力するかを制御する特別なメソッドが追加された
- Collection::insert()の追加
FormHelper
FormHelperは最初から再構築されました。新しい拡張可能なウィジェットシステムとなりました。フォームウィジェットは
これにより、アプリケーションまたはプラグインのコード中で、datetimeウィジェットのような複雑なウィジェットを簡単に定義できるようになりました。一度作成したら、ウィジェットはinput()
のようなFormHelperの機能と結合できるようになります。
FormHelperは新しいORMと連携するようになりました。個々のエンティティでも、エンティティのコレクションでもフォームを作成できます。
// 単独エンティティとそのアソシエーションのフォームを作成
echo $this->Form->create($article);
// 複数エンティティとそのアソシエーションのフォームを作成
echo $this->Form->create($articles);
FormHelperはプラガブルなコンテキストシステムであり、お望みのORMとフォームヘルパーを統合できます。
TranslateBehavior
TranslateBehaviorは最初から再構築されました。長い間待ち望まれてきた、find()時のアソシエーションを含めてすべてのモデルでの翻訳を実装しています。新しい TranslateTrait
は、エンティティ内での複数の翻訳の取扱が簡潔になっています。
ORMの改善
継続してORMの特性の構築を行っています。開発プレビュー2における目立った改善点は以下のとおりです:
- 複合主キーのサポート – ORMはすべてのアソシエーションで複合主キーをサポートします
- Model.beforefindイベントは同じクエリ中のすべてのアソシエーションでトリガーされます
- EagerローディングはQueryクラスから分離された。カスタムEagerローディングの実装がより簡単になった
- 名称 Model/Repository が Model/Table に変更された。何人かはRepositoryという言葉は混乱をまねく意味不明な用語と指摘している
- 具体的な実装に頼る部分を減らすためにInterfacesが抽出された
- 以前にafterFind()が行っていた機能を提供するためにformatResults()メソッドが追加された
- 複雑なcountロジックのサポートのためにQuery::counter()が追加された。PaginatorComponentでのオーバーライドが簡単になった
- Table::patchEntity()が追加され、フォームデータと既存のエンティティとそのアソシエーションのマージが可能になった
次のリリース:
次のリリースも開発プレビュー版になるでしょう。開発プレビュー3のリリースで、以下の点を更新する予定です:
- Bakeとそれに関連するタスクは新しいORMと連携するように更新が必要
- i18n extractタスクにおいて、テーブルオブジェクトのバリデーションメッセージの抽出部分の更新が必要
- SQLServerのサポートを追加。データベースレイヤがそこそこ安定していれば、SQLServerの追加はWindowsで開発している開発者にとって助けになる
3.0.0で見込まれるすべての変更点については、移行ガイドを参照してください[3]。3.0へのアイデア、コード、ドキュメント、フィードバックによって関わってくださった皆さんに感謝します。これはプロジェクトの大きなマイルストーンであり、CakePHPの最善のバージョンの作成は始まったばかりなのです。
「CakePHP 3.0.0 開発版プレビュー 2 がリリースされました」への1件のフィードバック