NetBeans PHP : NetBeans8.2でのいくつかの改善

netbeans

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へ登録をおねがいします。もしくは知らせていただけたら登録します。

もし、気になった機能があれば、開発版で有効になっているので使ってみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください