mabulog

このブログは、mabuの平凡な日常を淡々と描く物です。 過度な期待はしないでください。 あと、部屋は明るくして、 モニターから3メートルは離れて見やがってください。

「extension-phpdoc」を作りました。

extension-phpdocというライブラリを作成しました。
PHPのextensionに実装されている組み込みクラスと同等のダミークラスを集めたライブラリとなっています。

github.com

けいい

PHPの開発現場ではcomposerが当たり前となり、クラスのプロパティの調査、関数のオプションの確認といったライブラリの調査力が最近は求められています。
そんな中、組み込みクラスは実態がC言語からコンパイルされた成果物のみで普段の調査力とは違った労力が必要となり改善策を常々模索していました。
PHPStormには組み込みクラスを参照する機能があるという事を7月から働きだした新しい職場で教えて頂き驚きました。
Vim+ctagsには到底出来ない芸当です。
詳細を確認するとphpdoc用にダミーファイルを用意しているようでした。
私は先日Universal Ctagsのチームにジョインした事もあり、 PHPStormをリスペクト&インスパイアした組み込みクラスのダミークラス集を作ろうと考えたのが本ライブラリ開発の始まりでした。

インスールほうほう

本ライブラリは特性上組み込みクラスと競合します。そのため、グローバルインストール必須です。
グローバルインストールされたライブラリをプロジェクトから呼んでいるプロジェクトはインストール非推奨です。

$ composer global require kazuakim/extension-phpdoc

りようほうほう

私はVimで開発をしているのですが、グローバルインストールされたライブラリ用のタグファイルを生成し、
プロジェクト用のタグファイルとセットでVimに読み込ませています。
そうする事で自然なタグジャンプが可能となり、更に開発が加速します。
例でVimを上げましたが、グローバルインストールされたライブラリからphpdocを取得する方法を提供しているエディタ、IDEであれば利用できる事を想定しています。

こんご

開発している最中は機械的PHPマニュアルを読みながら実装を進めていましたが、
その際にPHP本体にあるクラスをオーバーライドしているクラスが散見されました。
そのような場合にタグジャンプではどちらにジャンプするか候補の選定が発生し、
条件が整っている場合には期待したクラスにジャンプできますが、大体はどのファイルにジャンプするかユーザに選択するようにインターフェースが表示されます。
自然な調査をサポートする本ライブラリとしてはあまり嬉しくない結果です。
そこである程度利用者が増えた場合にはオーガナイゼーション化して、クラスファイルをextension単位で分割したいと考えています。

また、PHPマニュアルのみ対応している状況のため、その他の組み込みクラスも随時対応していきたいと考えています。

PHP: MongoDB\Driver\Exception\InvalidArgumentException - Manual

まとめ

開発をすすめる上で調査力を向上したい方に広く使ってもらえたら、幸いです。
一旦PHPマニュアルをほぼ網羅出来たと思うので、ベータ版としてリリースしました。
もし、すでに同様のライブラリがありましたら、ご連絡して頂けると私が救われるので早めに教えて頂けると助かります。
また、応援して頂ける方は本ページのはてブまたはGitHubのスターをお待ちしています。

github.com

ついき

PHPStormにあるんだからプロジェクトを漁るべきでした。
教えて頂き最高に便利なプロジェクトがありました。 本開発は一旦終了です。

github.com