NetBeans for PHPにもいくつか載せてもらっているのですが、公式のブログに書いていないことも含めてエディタに関することをここに少しまとめます。
機能追加と改善項目
- PHP7のサポート
- PHPDoc コメントでのスペルチェッカーのサポート
- {@inheritdoc}タグのサポート
- ブレースマッチングの機能の改善
- コードテンプレートのコード補完機能の改善
- @return $this のサポート
- 変数によるstaticメソッドとフィールド,定数のコード補完
- traitに関連するバグの修正
- その他のバグの修正
PHP7のサポート
いくつかは実装されていますが、現時点ではまだオプションは有効になっていません。
PHPDoc コメントでのスペルチェッカーのサポート
Javadocのスペルチェッカーと同様の機能が実装されました。
https://blogs.oracle.com/netbeansphp/entry/spellchecker_for_phpdoc_comments
{@inheritdoc}タグのサポート
コード補完を実行時に継承元のドキュメントを表示できるようになりました。
https://blogs.oracle.com/netbeansphp/entry/inheritdoc_tag_support_added
ブレースマッチング機能の改善
いままではブレースの終了位置にキャレットがあると、開始位置のブレースの行だけツールチップとして表示されていましたが、 “if”や”class”の部分まで含むように表示されるようになります。
https://blogs.oracle.com/netbeansphp/entry/new_brace_matching_feature
コードテンプレートの補完機能の改善
自分で追加したコードテンプレートをコード補完のリストに表示することができるようになります。
https://blogs.oracle.com/netbeansphp/entry/code_completion_for_your_custom
@return $this のサポート
これまでは @return this もしくは @return \this と書かなければ補完で認識されませんでしたが、@return $this も使えるようになりました。またメソッド本体に”return $this;”があれば、PHPDocに@returnタグが書かれていなくても同じ結果になります。
/**
* @return $this
*/
public function something() {
}
さらに呼び出している型をみてコード補完のリストを表示してくれます。
たとえば、下記のコードの”$childClass->returnThis()->”では$thisのコンテキストはChildClassなので、ChildClassのメンバーも補完のリストに表示されます。
class BaseClass {
/**
* Just return $this.
*
* @return $this
*/
public function returnThis() {
return $this;
}
public function publicBaseClassMethod() {
echo "publicBaseClassMethod" . PHP_EOL;
}
}
class ChildClass extends BaseClass {
public function publicChildClassMethod() {
echo "publicChildClassMethod" . PHP_EOL;
}
}
$childClass = new ChildClass();
$childClass->returnThis()->publicChildClassMethod(); // here
変数によるstaticメソッドとフィールド,定数のコード補完
あまりいい使い方ではないとは思うのですが、$variable:: のあとでコード補完が効くようになりました。
<?php
class A {
const CONSTANT = "CONSTANT";
public static $publicStaticField;
public static function publicStaticMethod() {
}
}
$a = new A();
$a::CONSTANT; // CC
$a::$publicStaticField; // CC
$a::publicStaticMethod(); // CC
traitに関連するバグの修正
以下は修正された一部です。他にもまだtraitに関係するバグがいくつか残っているような気がします。
- class/trait内のコード補完でtraitのprivateメソッドが表示されない(直接使っているクラス内ではtraitのprivateメソッドも使用することができます)
- メソッドチェーンでtraitのメソッドを使った時にコード補完が動かない
- Introduce Hint(メソッドやフィールドの導入)が動かない
- staticメソッド(self::, static::)のコード補完が動かない
- e.t.c.
その他のバグの修正
- const宣言で配列を使ったとき、配列への参照でsyntax error (e.g. CONSTANT[0][1], self::CONSTANT[0])
バグをみつけたら。。。
NetBeansのBugzillaへ登録をおねがいします。もしくは知らせていただけたら登録します。
もし、気になった機能があれば、開発版で有効になっているので使ってみてください。