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()
はクエリストリング引数をパースします。