CakePHP2系の最新版を利用しながら、3系への以降を少しでもスムーズにさせるためのメモです。 実際には非常に多くの作業を伴うことが予想されますが、可能な部分だけでも対応しておきたいところです。 このエントリは随時更新中です。気づいた時&暇な時に追加・更新していきます。

PSR-4 に準拠した名前空間の導入

CakePHP3.0 から namespase が導入され、同時に PSR-4 準拠となります。それに関連してディレクトリ構造やクラス名、ファイル名が変更されます。 これに備えたアプリケーションコードの変更は2系では基本的に不可能と思われますが、準備のために整理しておきます。

APIの廃止、変更、代替案

クラス、メソッド、変数の廃止、メソッド引数の扱いの変更、推奨されている代替案などをまとめていきます。 中には 2.x のかなり初期の段階で移行を促しているものなど、あえて書くまでもないものも含まれていますが、区別なく列挙しています。 (多くの場合、現行の2.x系のバージョンアップの度に適宜非推奨が勧告されているようなので、常に推奨コードに更新し続けることで移行時の負担を最小限に出来るのではないかと期待しています)

グローバルプロパティ

定数

いくつかの定数の廃止

以下の定数が削除されます。適宜 Configure::write() などで置き換えることが推奨されています。

削除される定数
IMAGES
CSS
JS
IMAGES_URL
JS_URL
CSS_URL
DEFAULT_LANGUAGE

View

View class

View クラスメソッド関連の廃止要素と代替プラン

以下の様なView クラスのメソッドに関する廃止要素と代替プランがあります

廃止要素代替プラン参照
View::element() 第3引数の`plugin` 値第1引数においてプラグインドット記法を行う。
例: PluginName.element_name
View::element()
View::getVar() メソッドView::get()View::getVar()
View::addScript() メソッドコードブロック機能を利用する。View::addScript()

layout files

レイアウトファイルにおける変数の廃止と代替プラン

レイアウトファイルで利用可能な変数のうち、以下のような廃止要素と代替プランがあります

廃止プロパティ代替プラン参照
$scripts_for_layoutコードブロックを利用する。View::renderLayout()
$title_for_layout`title` をキーとしたコードブロックを利用する。View::renderLayout()
$content_for_layout`content` をキーとしたコードブロックを利用する。View::renderLayout()

Helper class

Helper クラスの廃止メソッド

以下のメソッドは廃止されます。

廃止メソッド名代替プラン
Helper::__get()不明
Helper::__set()不明
Helper::clean()不明

Helper クラスから他のクラスへ移行するメソッド

以下のメソッドは Helper クラスから他のクラスへ移されます。 サブクラスでこれらのメソッドを利用している場合は基底クラスを変更するなどの対処が必要になります。

移行するメソッド移行先クラス参照
Helper::_parseAttributes()HtmlHelperHelper::_parseAttributes()
Helper::_formatAttributes()HtmlHelperHelper::_formatAttributes()

FormHelper class

FormHelper クラスにおける廃止要素

以下の要素が廃止されます。

廃止要素代替プラン参照
input() メソッド第ニ引数の 'dateFormat' をキーとした値における文字列 ’NONE'
(#補足説明)
文字列ではなく null 値を渡す。FormHelper::_inputLabel()
補足説明

  • #: ソースコードにおいては FormHelper::_inputLabel() メソッドにおける変更点となっています。

Scaffold class

廃止クラス代替プラン
ScaffoldCRUD プラグインを用いる
この Scaffold クラスを含めた scaffolding の機能全体が廃止されます。替わりに3.0と互換性のある CRUD プラグインが2.x系ですでに提供されています。

Controller

Controller class

Controller クラスにおける廃止メソッド

廃止されるプロパティ代替プラン
Controller::httpCodes()CakeResponse::httpCodes()
Controller::header()CakeResponse::header()
Controller::disableCache()CakeResponse::disableCache()
Controller::flash()Session::setFlash()
Controller::validate()1.x系の残滓
Controller::validateError()1.x系の残滓
Controller::postConditions()
Scaffolding 関連のプロパティ
  • Controller::$scaffold
  • Controller::beforeScaffold()
  • Controller::_beforeScaffold()
  • Controller::afterScaffoldSave()
  • Controller::_afterScaffoldSave()
  • Controller::afterScaffoldSaveError()
  • Controller::_afterScaffoldSaveError()
  • Controller::scaffoldError()
  • Controller::_scaffoldError()
  • Controller::Scaffold()
  • Controller::Scaffold()
CRUD プラグインの使用
Controller::$extView クラスの継承を作成し、その $_ext プロパティをオーバーライドする

Controller クラスにおける変更API

Controller::redirect() の変更点
  • 第3パラメータが削除されます。
  • 戻り値が void から Response のオブジェクトに変更されます。
  • ただし、イベントの伝播が中止していた場合は 2.x系と同様 void が返されます。
変更前変更後
@paramsstring|array $url
integer $status
boolean $exit
string|array $url
integer $status
@returnvoidvoid|\Cake\Network\Response

 参考資料リンク集

CakePHP

Cookbook

The Bakery

github

PHP

PHP Framework Interop Group

Blog entries, slides, movies and so on

Others