9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Eclipse(PDO)でコード補完させるためのコメントの書き方

Posted at
class Hoge {
    // 何かしらの処理
}

というようなクラスがあり、それを

class Factory {
    public static function getHogeInstance() {
        return new Hoge();
    }
}

みたいな感じでインスタンスを生成するファクトリークラスがあるとして、

$hoge = Factory::getHogeInstance();

ってやると、当然Hogeオブジェクトを取得できるのだけど、Eclipse的には$hogeがHogeオブジェクトだとは分からないので、コード補完してくれない。

そこで、FactoryクラスのgetHogeInstanceメソッドにPHPDocのコメントを書いてやる。

class Factory {

    /**
     * Hogeオブジェクト取得
     * @return Hoge
     */
    public static function getHogeInstance() {
        return new Hoge();
    }
}

これで呼び出し元ではコード補完してくれるので、今まではそうやって対応してきたのだけど、これだとFactoryクラスで別のオブジェクトを返したくなった場合、返すオブジェクトの数だけ別のメソッドを作らなければいけなくなってします。

new $class()

みたいな感じで動的にインスタンスは作成できても、コメントは動的に書きようがないので、Eclipse的にはどのオブジェクト型なのかわからず、コード補完できない。

っていう問題にかれこれ1年以上悩まされていたのだけど、昨日、遂に問題が解決した。

以下、修正コード。

ファクトリークラス

class Factory {

    /**
     * Hogeオブジェクト取得
     * @param string $class
     * @return Ambigous
     */
    public static function getInstance( $class ) {
        return new $class();
    }
}

呼び出し元

/* @var $hoge Hoge */
$hoge = Factory::getInstance( Hoge::class );

ポイントは呼び出し元に書いた

/* @var $hoge Hoge */

というコメント。
こう書いてやると、メソッド内の変数でも型を指定できるので、Eclipseで補完してくれるようになります。

ちょっと長い説明になっちゃったけど、この感動が伝わったかな・・・
これでかなりコーディング量が削減できそうで、とってもゴキゲンです。

9
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?