【PhpStorm】ide-helperの仕組みと自作ide-helper

 ide-helperはIDEを助けるためのファイルです。具体的には通常検知できない補完機能を機能させるためのファイルです。
 例えばlaravel-ide-helperというライブラリがあります。
barryvdh/laravel-ide-helper: Laravel IDE Helper
 laravel-ide-helperはLaravel内の補完不能なコードを補完可能にします。代表的なのがファサード機能の補完です。これは次の様に動作します。

 \App::get()の実装情報を記述した_ide_helper.php内の定義を参照して補完、ジャンプができました。
 この仕組みのカラクリは実は簡単です。実行されることのないグローバル配下ファイル(大体プロジェクトルート直下)にnamespace, class, methodの定義を列挙しているだけです。グローバルで参照されるファイルに記述されているため、どこからでも定義が合算して扱われるようになり補完機能が働くようになります。_ide_helper.phpというファイル名はわかりやすさのためにつけられているだけで*.phpなら何でも問題ないです。
 これを利用することで好きにide-helperを作れます。例えば次の様にできます。

# _ide_helper_faker.php
<?php
// ja_JPロケールのみFaker\Generatorクラスに生えてくるプロパティ名とその実装箇所へのジャンプ
namespace Faker {
    /**
     * @see \Faker\Provider\ja_JP\Person
     * @property string $kanaName
     * @property string $firstKanaName
     * @property string $firstKanaNameMale
     * @property string $firstKanaNameFemale
     * @property string $lastKanaName
     * @see \Faker\Provider\ja_JP\Company
     * @property string $companyPrefix
     * @see \Faker\Provider\ja_JP\Internet
     * @property string $lastNameAscii
     * @property string $firstNameAscii
     * @see \Faker\Provider\ja_JP\Address
     * @property string $postcode1
     * @property string $postcode2
     * @property string $prefecture
     * @property string $ward       区
     * @property string $areaNumber 丁、番地、号
     * @see \App\Faker\Providers\Address
     * @property string $addressDetail 市区町村以下
     */
    class Generator
    {
    }
}

 作成時には対象箇所の量と複雑さによってリフレクションか手書きか使い分けると比較的楽です。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG