元記事はこちら。
CakePHPコアチームは CakePHP2.3.7 と 2.4.0-beta が入手可能になったことをお知らせいたします。2.3.7は2.3系のバグフィックスリリースであり、2.4.0-beta は2.4系の最初のリリースとなります。
CakePHPコアチームは CakePHP2.3.7 と 2.4.0-beta[1] が入手可能になったことをお知らせいたします。2.3.7は2.3系のバグフィックスリリースであり、2.4.0-beta は2.4系の最初のリリースとなります。
2.3.7の変更点の概要は以下のとおりです:
2.3.7の変更点の概要は以下のとおりです:
- キャッシュされたビューはContent-Typeヘッダを含むようになった。アップグレード時にビューキャッシュを一掃することをおすすめします
- SMTP経由で送信されたemailで、Return-Pathが含まれなくなった
- レコードの保存時に自動で記録される作成日・更新日(フィールド)の時刻が一致するようになった。まれに1秒の誤差が生じることがあった
- 定数IIS_SERVERに関する、ドキュメントに無く、テストされていない機能が削除された
- FormHelper::dateTime() で、maxYearが現在の年より早い(小さい)場合に正しい年を選択するようになった
- Eメールビューでバウンダリの計算がレンダリングプロセスの後半で行われるように修正された。ビューのコールバックにインラインイメージやファイルを添付できるが、(以前は)誤ったバウンダリ識別子が生成されていた。
- AuthComponentはアプリケーションのベースパスがコントローラ名と一致する場合に正しいリダイレクトURLを生成するようになった
- ‘index.php’を含むリクエストで生成されたエラーは正しく描画されるようになった
- ‘..’を含むクラス名はリジェクトされるようになった
本リリースには、アプリケーション外のコントローラが特定の条件下でロード可能になってしまう件に関するセキュリティフィックスが含まれています。PHPファイルのアップロードを許可し、ユーザデータを使用して最終的にファイル名を決定するアプリケーションにおいては重要なアップグレードになります。この状況で、攻撃者がPHPファイルをアップロードすると、外部からコードを実行できてしまいます。この件に関して報告し、再現手順を提供していただいたAdrian Ulrich氏に深謝します。
2.4.0-beta
2.4.0-beta リリースにはCakePHPのパフォーマンス、セキュリティ、使い勝手の改善に関するいくつかの新機能が含まれています。この新バージョンはやがて2.3系に代わるものとなります。移行ガイドはbook[2](英語)で提供されますので、旧バージョンからのアップグレード時にはぜひお読みください。
訳注:日本語はこちらと思われます。この記事の翻訳時点ではまだ作成されていないため、404 not foundになります。
現時点の2.4.0での新機能と変更点は以下のとおりです:
コンソール
- カラーサポートのあるターミナルで、ログされたnoticeメッセージがカラー表示されるようになった
スキーマシェル
cake schema generate
が--exclude
パラメータをサポートするようになった
Bakeシェル
cake bake model
が$behaviors
をサポートするようになった。たとえば、テーブル中でlft
、rght
、parent_id
の各フィールドが検知された場合はTreeビヘイビアが追加されるようになります。ModelTaskを拡張して、独自のビヘイビアを検知できるようにすることもできます。
FixtureTask
cake bake fixture
が--schema
パラメータをサポートするようになり、スキーマインポートを使用している場合、非会話的な”all”を指定してすべてのフィクスチャをbakeできるようになった
オブジェクト
Object::log()
に$scope
パラメータが追加された
コンポーネント
AuthComponent
Basic
もしくはDigest
認証時にAuthComponentは適切なステートレスモードをサポートするようになった。AuthComponent::$sessionKey
をfalseに設定すると、セッションが開始されない。Basic
もしくはDigest
だけを使用している場合、ログインページにリダイレクトされることはなくなった。詳細はAuthComponent
のページを参照。AuthComponent::$authError
プロパティにブール値false
を設定してメッセージの表示を抑制できるようになった
PasswordHasher
- 認証オブジェクトはパスワードハッシュの生成とチェックに新しいPasswordHasherオブジェクトを使用するようになった
モデル
Model::save()
、Model::saveField()
、Model::saveAll()
、Model::saveAssociated()
、Model::saveMany()
は新しくcounterCache
オプションをとるようになった。特定のsave操作でfalseに設定すると、カウンタキャッシュ値を更新しなくなる。Model::clear()
の追加
データソース
- Mysql、Postgres、SQLserver の接続定義時に ‘settings’ 配列をサポートするようになった。コネクションの作成時に キー => バリューの組みが
SET
コマンドにて発行される
ビュー
JsonView
- :php:class:
JsonView
にJSONPのサポートの追加
HtmlHelper
HtmlHelper::css()
のAPIの変更escapeTitle
オプションが追加され、HtmlHelper::link()
がリンクタイトルのみエスケープし、属性はエスケープされないようになった
TextHelper
TextHelper::autoParagraph()
の追加。テキストを自動的にHTMLパラグラフに変換する
PaginatorHelper
PaginatorHelper::param()
の追加
ネットワーク
CakeRequest
CakeRequest::param()
の追加CakeRequest::is()
の変更。配列タイプをサポートし、どれかにマッチした場合はtrueを返すCakeRequest::isAll()
の追加。リクエストが与えられたすべてのタイプにマッチするかチェックする
CakeEmail
- ログされるメールメッセージはデフォルトで
email
スコープを保持。ログ内にメール本文が表示されない場合、ログ設定にemail
スコープが追加されていることを確認する
HttpSocket
HttpSocket::patch()
の追加
ローカライゼーション
- ISO 639-3 に準拠し
ell
がギリシャ語のデフォルトロケールになり、gre
がエイリアスとなった。ロケールフォルダの調整が必要(/Locale/gre/
から/Locale/ell/
へ) - ISO 639-3 に準拠し
fas
がペルシャ語のデフォルトロケールになり、per
がエイリアスとなった。ロケールフォルダの調整が必要(/Locale/per/
から/Locale/fas/
へ) - ISO 639-3 に準拠し
sme
がサーミ語のデフォルトロケールになり、smi
がエイリアスとなった。ロケールフォルダの調整が必要(/Locale/smi/
から/Locale/sme/
へ) - ISO 639-3 に準拠し マケドニア語のデフォルトロケールは
mkd
からmk
に置き換えられた。ロケールフォルダの調整が必要 - カタログコードの調整。
in
を削除しid
を採用(インドネシア語)、e
を削除しel
を採用(ギリシャ語)、n
を削除しnl
を採用(オランダ語)、p
を削除しpl
を採用(ポーランド語)、sz
を削除しse
を採用(サーミ語) - カザフ語の追加。ロケールは
kaz
、カタログコードはkk
- グリーンランド語の追加。ロケールは
kal
、カタログコードはkl
ロギング
- ログエンジンはセットアップ設定中で接尾辞
Log
を使用しなくてよくなった。FileLogエンジン用に'engine' => 'File'
を定義すれば十分である。これにより設定内のエンジン名が統一される(キャッシュエンジンの例を参照)
注記:DatabaseLogger
のような、接尾辞Log
を使用するという規約に影響されないログエンジンの場合、クラス名をDatabaseLog
に変更する必要がある。さらに、SomeLogLog
のように、接尾辞を二回繰り返すこともしない。
FileLog
FileLog
エンジン用にsize
とrotate
の2つのオプションの追加
SyslogLog
- メッセージをsyslogにながす新しいロギングエンジン
SyslogLog
の追加。
ユーティリティ
- コマンドラインモードで
pr
はHTMLを出力しなくなった
バリデーション
Validation::date()
がy
やym
の書式をサポートValidation::phone()
で、ISO 3166(2文字コード)に準拠し、バリデーションメソッド内の国コードの統一のため、カナダの国コードをcan
からca
に変更。
CakeNumber
- 通貨
AUD
、CAD
、JPY
の追加 GBP
とEUR
のシンボルがUTF-8になった。UTF-8でないアプリケーションをアップグレードする場合は、それらの通貨を使用する前にスタティック属性$_currencies
を適切なHTMLエンティティシンボルに更新すること
CakeTime
CakeTime::isPast()
とCakeTime::isFuture()
の追加
Xml
Xml::fromArray()
に、きちんとフォーマットされたXMLを返す新しいオプションpretty
の追加。
エラー
ErrorHandler
- 新しい設定オプション
skipLog
の追加。特定の例外タイプのログ出力をスキップできるようになった。Configure::write('Exception.skipLog', array('NotFoundException', 'ForbiddenException'));
は、これらの例外のログ出力をスキップしたり、'Exception.log'
設定をtrue
にすることで拡張したりできる
ルーティング
Router
Router::baseUrl()
の追加。非推奨になったFULL_BASE_URL
を置き換える
APIドキュメントとcookbookは2.4.0の変更点・改良点を反映し更新されています。
コミット、チケット、ドキュメントの編集ほか、このフレームワークに貢献してくれるすべての皆さんに深謝します。あなたがいなければCakePHPは存在しません。
リンク