この記事は、Eclipse PDT、NetBeansなどのIDEでPHPの入力補完をするためのコードの書き方を紹介しています。
はじめに
Eclipse PDTやNetBeansは、そのままでもある程度のコード補完は自動でやってくれますが、PHPDocコメントを記述するとさらに賢くコード補完を行なってくれるようになります。
PHPDocコメントの書き方は、Zend Framework, PEARなど、オープンソースのパッケージの書き方を参考にするのが手っ取り早いです。
マニュアルも一読すると良いです。
https://www.phpdoc.org/docs/latest/index.html
以降より、PDTでコード補完するためのサンプルを紹介します。
目次
関数の引数で渡した変数に対してコード補完する
<?php
/**
* 関数の説明
*
* @param hoge $h 引数の説明
*/
function hoge_func($h) {
$h->
}
/**
* クラスの説明
*/
class hoge {
/**
* 関数の説明
*/
public function hogeFunc() {
}
}
上記のようにPHPDocコメントを記述することで、hoge_func の引数 $h は hoge クラスのインスタンスであると認識されます。上記の例では、hoge_func関数の中で、$h-> と入力すると、hoge クラスのメンバがコード補完されます。
関数の戻り値を受け取った変数に対してコード補完する
<?php
$r = hoge_func();
$r->
/**
* クラスの説明
*/
class hoge {
/**
* メソッドの説明
*/
public function hogeFunc() {
}
}
/**
* 関数の説明
*
* @return hoge 戻り値の説明
*/
function hoge_func() {
return new hoge();
}
上記のようにPHPDocコメントを記述することで、hoge_func の戻り値 $r は hoge クラスのインスタンスであると認識されます。メソッドの戻り値に対するPHPDocコメントの書式は下記の通りです。$r-> と入力すると、hoge クラスのメンバがコード補完されます。
クラスのプロパティに対してコード補完する
<?php
/**
* クラスの説明
*/
class hoge {
/**
* プロパティの説明
*
* @var hoge2
*/
public $hogeProp;
/**
* コンストラクタの説明
*/
public function __construct() {
$this->hogeProp->
}
}
/**
* クラスの説明
*/
class hoge2 {
/**
* メソッドの説明
*/
function hoge2Func() {
}
}
$h = new hoge();
$h->hogeProp->
上記のようにPHPDocコメントを記述することで、hoge クラスの $hogeProp プロパティ は hoge2 クラスのインスタンスであると認識されます。hoge クラスのメソッド内で $this->hogeProp-> と入力すると、hoge2 クラスのメンバがコード補完されます。
$h->hogeProp-> と入力すると、hoge2 クラスのメンバーがコード補完されます。
プロジェクト外にあるライブラリをコード補完する
PEAR, PHPUnit, cakephpなど、外部のライブラリのコード補完を有効にするには、下記の方法があります。
- PHPプロジェクト内に外部のソースコードを含める。
- PDTのPHPインクルードパスを設定する。
1の方法はコード補完はできるようになりますが、あまり良い方法ではありません。
2の方法についてcakephpを例に紹介します。
「PHP エクスプローラー」の「PHP インクルード・パス」で右クリック>「インクルード・パス」>「インクルード・パスの構成」を選択します。
「ライブラリー」タブの「外部ソース・フォルダーの追加」を選択します。
cakephpライブラリのディレクトリを選択します。ここでは、cake\libsフォルダを選択しています。
cakephpのグローバル関数 h() を入力したところです。引数や関数の説明が表示されています。もちろんF3キーで定義にジャンプすることもできます。