CakePHP

CakePHP1.3と2.xの違いを適当にまとめてみる。

表題の通り、CakePHP1.3と2.xの違いを、とりあえず、アンチョコとしてまとめてみます。
主に、2.0 移行ガイドよりのコピペ+メモです。

2.0 移行ガイド - CakePHP Cookbook v2.x documentation

PHPバージョン

PHP5.2.8以上をサポート
PHP4系統はCakee2.x系統では完全サポート外となる。1.3以下でやってくれというスタンス。

ファイル・フォルダ名

ファイル名

キャメルケース(CamelCase)に変更。アンダースコア(アンダーバー)で繋ぐことは基本的になくなる。

my_things_controller.php は MyThingsController.php になる。
form.php (ヘルパー) は FormHelper.php になる。
session.php (コンポーネント) は SessionComponent.php になる。

ただし、ビューファイルは従来通り、小文字とアンダースコアで構成される。

フォルダ名

ほとんどのフォルダ、特にクラスを含むフォルダはキャメルケース(CamelCase)にする必要あり。

キャメルケースのフォルダ
Config
Console
Controller
Controller/Component
Lib
Locale
Model
Model/Behavior
Plugin
Test
Vendor
View
View/Helper

小文字のフォルダ
webroot
tmp

AppController / AppModel / AppHelper / AppShell

app/app_controller.php、
app/app_model.php 、
app/app_helper.php

はそれぞれ、

app/Controller/AppController.php、
app/Model/AppModel.php 、
app/View/Helper/AppHelper.php

に配置・名称変更されました。

また、全てのシェル・タスクはAppShellを継承するようになりました。
独自のAppShell.phpを app/Console/Command/AppShell.php にもつことができます。

Basics.php

削除されたエイリアスが妙にあるので注意。aa()が無くなったので修正が大変だw

  • getMicrotime() は削除されました。 代わりにネイティブの microtime(true) を使用してください。
  • e() は削除されました。 echo を使用してください。
  • r() は削除されました。 str_replace を使用してください。
  • a() は削除されました。 array() を使用してください。
  • aa() は削除されました。 array() を使用してください。
  • up() は削除されました。 strtoupper() を使用してください。
  • low() は削除されました。 strtolower() を使用してください。
  • params() は削除されました。 これはCakePHP内で使われることはありませんでした。
  • ife() は削除されました。 三項演算子を使ってください。
  • uses() は削除されました。 App::import() を使ってください。
  • PHP4互換のための関数は削除されました。
  • PHP5定数は削除されました。
  • グローバル変数 $TIME_START は削除されました。 代わりに TIME_START 定数か $_SERVER['REQUEST_TIME'] を使用してください。

パラメータ受け取り方法

ver 1.x系では

としていたのが

ver 2.x系では、

となる。

まとめると、

CakePHP1.3系 : CakePHP2.0系
$this->data : $this->request->data
$this->params['url']['url'] : $this->request->url
$this->params['contoller'] : $this->request->controller
$this->params['action'] or $this->action : $this->request->action
$this->params['pass'] or $this->passedArgs : $this->request->pass
$this->params['named'] or $this->passedArgs : $this->request->named

のようになる。

コンポーネント

コンポーネントは Object を継承するのではなく Component クラスを継承する。
自作のコンポーネントなど、1.x系では Object クラスを継承しているが2.xでは Component クラスを継承して使う。

ヘルパー

ビュー内のヘルパーの記述変更

今まで使っていたHelperの使い方が変わる。

EX.1

ver1.x(従来)

ver2.x(新バージョン)

EX.2

ver1.x(従来)

ver2.x(新バージョン)

EX.3

ver1.x(従来)

ver2.x(新バージョン)

ヘルパーの非推奨になったプロパティ

以下のヘルパのプロパティは非推奨となります。
将来のリリースで削除される予定のこれらのプロパティに直接アクセスする代わりに、Requestオブジェクトのプロパティまたはヘルパーのメソッドを使ってください。

  • Helper::$webroot は非推奨になりました。代わりにRequestオブジェクトのwebrootプロパティを使用してください。
  • Helper::$base は非推奨になりました。代わりにRequestオブジェクトのbaseプロパティを使用してください。
  • Helper::$here は非推奨になりました。代わりにRequestオブジェクトのhereプロパティを使用してください。
  • Helper::$data は非推奨になりました。代わりにRequestオブジェクトのdataプロパティを使用してください。
  • Helper::$params は非推奨になりました。代わりに $this->request を使用してください。

XmlHelper、AjaxHelper、JavascriptHelperの削除

AjaxHelperとJavascriptHelperは1.3バージョンから非推奨となったため削除されました。
XmlHelperは、Xml の改善により、時代遅れで冗長になったことから削除されました。以前のXmlHelperの使用方法を書きなおすためには Xml クラスを使う必要があります。
AjaxHelperとJavascriptHelperは、JsHelperとHtmlHelperに置き換えられました。

JsHelper

JsBaseEngineHelper は抽象クラスとなりました。 以前はエラーを吐いていたメソッド全てを実装する必要があるでしょう。

PaginatorHelper

PaginatorHelper::sort() はtitleとkey引数の順序を逆に取るようになりました。 $keyは常に最初の引数になります。 これは2番目のものを追加するときに引数を交換(swap)する必要を無くすためです。
PaginatorHelperは内部で使われるページングのパラメーターに数多くの変更があります。 defaultキーは削除されました。
PaginatorHelperはクエリ文字列のページングパラメーターを用いてのリンクの生成をサポートするようになりました。

FormHelper

$selectedパラメータの削除

$selected パラメータは FormHelper のいくつかのメソッドから削除されました。
全てのメソッドは $attributes['value'] キーをサポートするようになり、 $selected の代わりに使われるでしょう。
この変更は FormHelper のメソッドを簡略化し、数多くの引数を減らし、 $selected が作り出す重複を無くすものです。

影響のあるメソッドは以下のとおりです:

  • FormHelper::select()
  • FormHelper::dateTime()
  • FormHelper::year()
  • FormHelper::month()
  • FormHelper::day()
  • FormHelper::hour()
  • FormHelper::minute()
  • FormHelper::meridian()

$selectedの代わりに、$attributes の連想配列で指定する方法

これでデフォルトで「選択肢B」という項目が選択される

文法

ver1.3(従来)

ver2.x(新バージョン)

[tgAmazonItemLookup asin="4774153249" related="1"]

-CakePHP
-,