お久しぶりです、パッションの伝道師こと鰯です。 今回は、弊社でも採用しているPHPの統合開発環境である、PHPStormの補完機能について、ちょっと便利なTIPSを紹介したいと思います。 世のWebプログラマは、きっとVimやEmacs比率が多いかと思いますが、導入の敷居の低さ、機能の充実では PHPStorm も十分、現場で使えるしろものかと思います。 では、さっそく表題のPHPのExtensionの関数補完についてですが、PHPStormは標準で実装されている関数やクラスについては、当然のごとく補完ができるようになっているのですが、extensionといった任意で追加するものについては、補完がされません。 以前から、どうにかならんかなと思っていたのですが、今回、Google先生にお尋ねしてみると、こんなものを発見。 『WI-174 PHP stubs are incomplete or differ from online docs / adding completion for custom extensions or libraries』 という事で、さっそく試してみました。手順は以下のようになります。 今回は Yaml extension の補完を追加したかったので Yaml のみを対象にしていますが、他のものも同様に同じ手順で可能と思います。 なお、PHPStormのVersionはv6で、Mac環境で作業しています。

PHPStorm.app用のstubファイル作成

PHPのオンラインドキュメントのソースを取得

[code lang=”bash”]svn co https://svn.php.net/repository/phpdoc/modules/doc-en phpdoc[/code]

Stub作成用のプログラムをbitbucketから取得 Issueにあったプログラムは、クライアントマシンのパスがリテラルで書かれてて、すぐに動かなかったので、少し修正して、オプションで指定できるように変更してあります。

 

※プログラムを動かすと Notice が大量に出るので無視してます stubs/ の中に作成されたphpファイルがあると思いますが、これは、実行したphpに含まれるextensionだけが対象になっているようで、すべてのextensionは生成されませんので、必要に応じて、extensionを追加するか、または、プログラムの改修をしてください。

PhpStorm.app の stub が含まれるパッケージを更新する

 

実は、生成された stub ファイルだけでは正常に補完できません、というか、正確には補完はされるが、関数のデフォルト値に関しての情報が抜けているので、すべての引数が必須の状態になっているので、引数を省略すると警告が… ここからは手作業になってしまうのですが、それぞれの関数の引数について、デフォルト値を手作業で追加していきます。

BEFORE

[code lang=”php”]function yaml_parse($input, $pos, $ndocs, $callbacks) {}[/code]

AFTER

[code lang=”php”]function yaml_parse($input, $pos = 0, &$ndocs = null, array $callbacks = null) {}[/code]

こんな感じに、デフォルト値の定義を追加していきます… 今回は、YAML extensionが対象だったので、関数5つで済んだので良いんですが、関数が多かったりするものは、ちょっと…(きっと、デフォルト値までstub化してくれる方がどこかにいる事を願って…) ちなみに、修正済みの yaml 用のstubはここに置いておきます。

[code lang=”bash”]git clone git@bitbucket.org:iwai/phpstorm-stubs.git[/code]

修正が完了したら、再度、パッケージ化してPHPStormのjarを上書きして完了です。 (バックアップは取っておいた方が良いですよ)

 

さっそく、yamlのstubが入った、PHPStormを起動してみましょう、 PHPStormでYaml関数補完 まあ、何ということでしょう、あの、補完もきかず警告の出ていた関数が、匠の技によって、PHPStorm の標準機能のように動作してるではありませんか。 ということで、いかがでしたでしょうか、素敵なPHPStormライフを!

あわせて読みたい記事