Writing Some Code

2008-02-04

[][]Eclipse PDTCakePHP開発、まず設定すべきこと 01:24 Eclipse PDTでCakePHP開発、まず設定すべきことを含むブックマーク Eclipse PDTでCakePHP開発、まず設定すべきことのブックマークコメント

Eclipse PDTを使う理由の1つは、その強力なコード補完機能です。

CakePHPを使った開発でもそれを最大限に活かさないのはもったいない!ということで、各所で既出な情報ではありますが、自分の備忘録を兼ねて書きます。

知らない人は今すぐ設定することをオススメします。この設定をすると開発効率は格段にあがると思います。

Viewファイルのコンテンツタイプの設定

Viewファイル(1.1系だと.thtml、1.2系だと.ctpが拡張子のファイル)は、デフォルトではただのテキストファイルとして扱われ、phpコードの補完機能が使えません。

これらはコンテンツタイプの設定をすることで、phpコンテンツとしてEclipseでは認識され、コードの補完もできるようになります。

その設定方法はというと、以下の通り。

  1. メニューバーの「ウィンドウ」⇒「設定」を選択
  2. 設定画面の左側の「一般」⇒「コンテンツ・タイプ」を選択
  3. 設定画面の右側上部で「テキスト」⇒「PHP コンテンツ・タイプ」を選択
  4. 設定画面の右側の「追加」ボタンを押して"*.ctp"(もしくは"*.thtml")を追加
  5. 設定画面の右側下部の「ファイルの関連付け」に追加したものが表示されている事を確認して「OK」ボタンをクリック

f:id:ngtn:20080205000549j:image



Viewファイル内で使うヘルパーのコード補完

Viewファイルの中で多用するヘルパー変数($html,$formなど)はデフォルトではコード補完がききません。

その変数が何のオブジェクトなのかEclipseに教えてあげる必要があります。

この設定はCode completion in views with Eclipse PDT - cakebakerで紹介されている方法を用います。

app/configフォルダの下にcode_completion.php等の適当な名前で以下のコードを保存すると、Eclipseがそれぞれの変数が何のオブジェクトであるかを認識し、Viewファイル内でヘルパーのコード補完が出来るようになります。


<?php
// stop page loading
 exit; 

// reference helpers so Eclipse provides code completion
 $ajax = new AjaxHelper();
 $cache = new CacheHelper();
 $form = new FormHelper();
 $html = new HtmlHelper();
 $javascript = new JavascriptHelper();
 $number = new NumberHelper();
 $session = new SessionHelper();
 $text = new TextHelper();
 $time = new TimeHelper();
 ?>

以上は1.1系のヘルパーですが、自作のヘルパーや、XmlHelperやPaginatorHelperなど1.2系で追加されたヘルパーは、適宜ここに追記すると良いでしょう。



Controller内で使うモデル、コンポーネント等のコード補完

Controller内で自動的に設定された、もしくは$usesや$componentsで指定して設定したモデルやコンポーネントは、フレームワークが$this->Hogehogeという形でセットしたクラス変数になります。

これらも通常は$this->Hogehogeの先のコード補完は出来ないのですが、ひと手間かけてあげると出来るようになります。

やりかたは


<?php
class HogehogesController extends AppController {
	/**
	 * Hogehogeモデル
	 *
	 * @var Hogehoge
	 */
	var $Hogehoge;

	/**
	 * セッションコンポーネント
	 *
	 * @var SessionComponent
	 */
	var $Session;

…
…
…

}

といった具合に、あらかじめ変数を書いておき、コメントの@varでクラス名を指定しておきます。

そうすると$this->Hogehogeや、$this->Sessionなども何のオブジェクトであるかが認識され、コード補完がきくようになります。

毎回それぞれのControllerに書くのが面倒であれば、全てのモデル・コンポーネントについて、継承元のAppController内にあらかじめ纏めて書いてしまうという荒業も一つの手だと思います。

まとめ

たったこれだけのセットアップで、自分でタイピングする量はかなり減り、それ以降の開発効率が格段に違います。

クドイですが、まだ設定をしていない方は今すぐの設定をオススメします。

toma-stktoma-stk 2008/04/28 20:27 コード補完を設定したところ、開発がかなり楽になりました!ありがとうございます!

ngtnngtn 2008/04/30 21:57 この記事がお役に立てたみたいで、コチラとしても嬉しいです!

gunnygunny 2008/06/14 13:50 有益な情報ありがとうございます。
ただ、PDT0.7では、Hogehoges_controllerの中で
$this->Hogehoge、と書いてもその先の”findAll”などは補完されないようでした。
モデルのメソッドまでは補完できないのでしょうか?

valuesharevalueshare 2009/12/07 18:44 素晴らしい!!
コンテンツタイプの設定とヘルパーのコード補完を設定しただけですが、開発が10倍楽になりました。
有益な情報をありがとうございます。