元記事はこちら。
By lorenzo
最初の、そして一度きりであることを願いたいですが、CakePHP2.1のリリース候補版がリリースされました。2.0で稼動中のアプリケーションがあるか、移行を計画している場合は、このバージョンをチェックするいいチャンスです!
CakePHPコアチームは、初のCakePHP 2.1.0のリリース候補版が入手可能になったことをお知らせいたします。先のリリース時にお伝えしたとおり、このバージョンは2.0.6と完全な後方互換性を保っており、あなたのアプリケーションをアップデートしてこのリリースに含められた多くの新機能や優位性を活かせます。このブランチでの唯一のリリース候補版であることを願っています。深刻なバグがあった場合には、安定版にいくまでにリリース候補版を供給し続ける予定です。
このリリース候補版には、先の2.1ベータリリース以降、合計で170以上のコミットと4つの大きな新機能・機能拡張が加えられています。完全なリストはchangelogページで閲覧できます。以下はこのバージョンのハイライトの概要です:
ほとんどのヘルパーはユーティリティライブラリに変換された
多かったリクエストの1つに、Text、Time、Numberヘルパーをビュー以外の箇所でも使用したいというものがありました。各ヘルパーで提供されているメソッドの有効な使用方法は、シェルからのメール送信とか、日付の書式を保存前にモデル内で使用するなどで、コントローラ内からの要望もありました。我々はこれらのヘルパーをCakeTime
とCakeNumber
というライブラリにリファクタし、すべてのTextヘルパーのメソッドをString
クラスに配置しました。
これらのライブラリをインポートするにはApp::uses('String', 'Utility')
と書き、使用するにはString::truncate($text);
のように書くだけで、簡単です。
すべての新しいライブラリはstatic(静的)メソッドで構成されていて、クラスのインスタンスを生成する必要はありません。さらに、リファクタされたヘルパーは通常通り動作しますが、機能するために現在の基底ライブラリに依存します。ヘルパーと交換してビューでも同じ結果が得られるように考慮されています。
ディープセーブ
saveAll
とその類似機能(saveMany
, saveAssociated
, validateAssociated
…) は新しいdeep
というオプションパラメータを取るようになります。このパラメータをtrue
にすると、できるだけ深く保存するように動作し、一つのトランザクションで子階層にあるデータを保存することが可能になります。たとえば、著者・投稿・関連コメントを一度の呼び出しのみで保存できるようになります。
前述の機能は検証され保存されるべきフィールドを指定したfieldList
オプションも受け付けます。このリストは深い関連にも適用されます。
新しいACLエンジン
これまでの古き良きACLエンジンに代わり、設定ファイルに基づいた新しいものを追加しました。このエンジンはAROS、ACOS、アプリケーションリソースへのアクセス許可などの特定の変数を定義したphpファイルのかたちをとります。これはデータベースを使用しないシステムや動的にパーミッション管理が必要なシステムにスピーディにアクセス権を導入する有効な代案となり得ます。
HtmlHelper::media()
HTMLHelperには多数の代替記法を持つHTML5互換のaudioタグやvideoタグのために、新しいmedia()
メソッドが実装されました。
ほかの改良点や変更点
- PHPバージョンの最低要件が、PHPのバグ(#44251、#45748)のために5.2.8にアップデート
- Paginatorヘルパーは現在のページリンクのためのデフォルトクラスをオプションとして受け取る
- 存在しないビューは例外を投げるように拡張
- ビュー内で絶対パス(Viewフォルダへの相対パス)を使用できるように拡張
- home.ctpやデフォルトレイアウトなどほとんどのCakeコアビューファイルはappフォルダに移動
- クエリパラメータはプリペアードステートメントを使用した場合データベースログに表示される
このバージョンの準備はほとんど終わっており、まだ幾らかのサプライズがありますので、期待していてください。いつもパッチやドキュメントの変更や新しいチケットをくれるフレンドリーなCakePHPコミュニティに感謝しています。あなたがいなければCakePHPは存在しません。
リンク
訳注:時間がとれていないので、技術的検証ができていません。慎重に訳しているつもりですが間違いがあった場合はご容赦ください。