2.4移行ガイド
CakePHP 2.4 は、2.3 の API の完全上位互換です。 このページでは、2.4 の変更と改善についてのアウトラインを紹介します。
コンソール
- ターミナルがカラーをサポートしていた場合、notice のメッセージに色が付くようになりました。
- ConsoleShell は非推奨となりました。
SchemaShell
cake schema generateは--excludeパラメータをサポートしました。CAKEPHP_SHELL定数は非推奨となりました。CakePHP 3.0 で廃止されます。
BakeShell
cake bake modelは$behaviorsをサポートしました。 例えば、Tree ビヘイビアを追加した場合、テーブルから lft や rght 、 parent_id のフィールドを探します。 また、独自のビヘイビアをサポートするために ModelTask を拡張することができます。- ビューやモデル、コントローラ、テストおよびフィクスチャの
cake bakeにおいて、 ファイルを強制的に上書きする-fもしくは--forceパラメータがサポートされました。 - コアのタスクは、ヘルパーやコンポーネント、ビヘイビアと同じように エイリアス名を付けることができます。
FixtureTask
cake bake fixtureに--schemaパラメータがサポートされました。 スキーマのインポートする場合に、非対話型の "all" で全てのフィクスチャを bake することを許可します。
コア
Constants
IMAGES_URL、JS_URL、CSS_URLの各定数は非推奨となり、App.imageBaseUrl、App.jsBaseUrl、App.cssBaseUrlのコンフィグ変数の利用が推奨されます。IMAGES、JS、CSSの各定数は非推奨となりました。
Object
Object::log()に$scopeパラメータが追加されました。
コンポーネント
AuthComponent
- AuthComponent は 'Basic' もしくは 'Digest' 認証を使ったステートレスなモードをサポートしました。
AuthComponent::$sessionKeyを false にすることで、 セッションの開始を抑制することができます。 'Basic' もしくは 'Digest' 認証のみを使った場合、 ログインページに飛ばされることはなくなりました。 更に詳しい情報はAuthComponentページを参照して下さい。 AuthComponent::$authErrorプロパティをfalseにすることで、 フラッシュメッセージを抑制することができます。
PasswordHasher
- 認証のオブジェクトは、パスワードのハッシュ値の生成やチェックに利用できる 新しいパスワードハッシュオブジェクトを利用可能になりました。 詳しくは Hashing Passwords を参照して下さい。
DbAcl
- DbAcl は
LEFTジョインではなくINNERジョインを使用するようになりました。 これによりいくつかのデータベースでのパフォーマンスが向上します。
モデル
Models
Model::save()、Model::saveField()、Model::saveAll()、Model::saveAssociated()、Model::saveMany()は 新しくcounterCacheオプションを持つようになりました。 この値を false にセットすることで特定の保存時にカウンタキャッシュの更新を抑制できます。Model::clear()が追加されました。
Datasource
- Mysql と Postgres、Sqlserver では、接続設定に 'settings' 配列が利用可能になりました。 このキー・バリューペアは、コネクションの生成時に
SETコマンドとして発行されます。 - Mysql ドライバが SSL オプションをサポートしました。
ビュー
JsonView
JsonViewに JSONP サポートが追加されました。_serializeキーは、シリアライズ値の改名をサポートしました。- debug > 0 の場合 JSON は表示されます。
XmlView
_serializeキーは、シリアライズ値の改名をサポートしました。- debug > 0 の場合 XML は表示されます。
HtmlHelper
HtmlHelper::css()用の API が簡素化されました。 2番めの引数として、オプションの配列を渡すことができます。 オプション配列を渡した場合にrelアトリビュートのデフォルトは 'stylesheet' となります。HtmlHelper::link()に新しくescapeTitleオプションが追加されました。 エスケープ処理をリンクのタイトルだけにし、アトリビュートには影響を及ぼさないための オプションです。
TextHelper
TextHelper::autoParagraph()が追加されました。 自動的に HTML の p タグを付与した形に変換します。
PaginatorHelper
PaginatorHelper::param()が追加されました。- 最初のページには
/page:1や?page=1が含まれなくなりました。 これは正規化や noindex 等の処置が必要になっていた複製コンテンツ問題に役立ちます。
FormHelper
FormHelper::dateTime()にroundオプションが追加されました。upもしくはdownをセットすることで、指定した方向に丸め処理が行われます。 デフォルトは null で、intervalに従って四捨五入します。
ネットワーク
CakeRequest
CakeRequest::param()が追加されました。CakeRequest::is()はタイプの配列をサポートし、そのタイプにマッチしていた場合は true を返すように変更されました。- 指定したタイプにマッチするリクエストがどうか判定する
CakeRequest::isAll()が追加されました。
CakeResponse
- リダイレクト用の location ヘッダを設定・取得する
CakeResponse::location()が追加されました。
CakeEmail
- email メッセージのログは
emailスコープをデフォルトで持つようになりました。 もし、ログに email のコンテンツを含めたくなければ、ログの設定にemailのスコープを追加して下さい。 CakeEmail::emailPattern()が追加されました。 このメソッドは、緩いバリデーションルールの利用を許可します。 これは、規格に合っていないアドレスを利用している特定の日本のホストにおいて有用です。CakeEmail::attachments()のdataキーで、直接添付ファイルの コンテンツを指定することができるようになりました。- 設定のデータがトランスポートクラスのデータと正しくマージされるようになりました。
HttpSocket
HttpSocket::patch()が追加されました。
I18n
L10n
- ギリシャ語のデフォルトロケールが 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で追加されました。 - 定数
DEFAULT_LANGUAGEは非推奨となり、代わりにコンフィグのConfig.languageを利用して下さい。
ログ
- ログエンジンのコンフィグに
Logサフィックスは不要になりました。 FileLog エンジンを利用するには'engine' => 'File'と定義して下さい。 これはコンフィグでエンジンを指定する方法を統一します(例えばキャッシュエンジンを見て下さい) 注意: 例えばログエンジンとしてDatabaseLoggerのようにLogサフィックスが 付いていない名称を使っていた場合は、DatabaseLogのようにクラス名を変更して下さい。 また、末尾に2回もサフィックスが付くようなSomeLogLogという名称も避けるべきです。
FileLog
- FileLog に
sizeとrotateの2つの新たな設定オプションが追加されました。 - デバッグモードの場合で、ディレクトリが存在しなかった際には、不要なエラーを発生させないように 自動的にディレクトリを作成します。
SyslogLog
- 新しいログエンジンとして syslog へ吐き出す SyslogLog が追加されました。
キャッシュ
FileEngine
- デバッグモードの場合で、ディレクトリが存在しなかった際には、不要なエラーを発生させないように 自動的にディレクトリを作成します。
ユーティリティ
General
- CLI で実行した場合、
pr()は HTML で出力しなくなりました。
Sanitize
Sanitizeクラスは非推奨となりました。
Validation
Validation::date()がyとymのフォーマットをサポートしました。- カナダ用の
Validation::phone()の国コードが ISO 3166(2文字コード)に統一させるためにcanからcaへ変更されました。
CakeNumber
- 通貨
AUDとCADとJPYが追加されました。 GBPとEURのシンボルは UTF-8 になりました。 UTF-8 でないアプリケーションをアップグレードする場合、HTMLエンティティのシンボル (£と€)を利用して$_currenciesアトリビュートを アップデートしてください。CakeNumber::currency()にfractionExponentオプションが追加されました。
CakeTime
CakeTime::isPast()とCakeTime::isFuture()が追加されました。CakeTime::timeAgoInWords()に出力文字列をカスタマイズする2つの 新しいオプションが追加されました。relativeString(デフォルト%s ago)とabsoluteString(デフォルトon %s)
Xml
Xml::fromArray()にうまくフォーマットされた XML を出力するprettyオプションが新たに追加されました。
エラー
ErrorHandler
- 新しい設定オプションに特定の Exception のスキップを許可する
skipLogが追加されました。Configure::write('Exception.skipLog', array('NotFoundException', 'ForbiddenException'));は、'Exception.log'がtrueの場合にこれらの例外を除外してロギングします。
ルーティング
Router
Router::fullBaseUrl()がコンフィグ値App.fullBaseUrlと共に追加されました。 これらは非推奨となったFULL_BASE_URLの代わりに利用します。Router::parse()はクエリストリング引数をパースします。