元記事はこちら。
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は存在しません。
リンク