エキサイト株式会社の武藤です。
PHP の可変関数
PHP には可変関数という機能があります。
関数名を変数にすることで、動的に呼び出したい関数を変更できます。
<?php class Demo { function foo() { echo "foo"; } } $functionName = 'foo'; $demo = new Demo(); $demo->$functionName();
使い方によっては有用な機能かもしれません。
しかし、intelliJ (PhpStrom) でファイルを開いてみると、未使用関数としてグレーアウトされてしまいます。
未使用のコードは、運用開発の際にノイズになるので、可能な限り削除してしまう方がよいでしょう。しかし、可変関数呼び出しのコードがある場合、プロジェクト全体に検索をかけて、使われていないことの確認が必要です。 また、未使用関数の場合、定義元へコードジャンプも効かないため、修正するファイルの切り替え等の作業が煩雑になってしまいます。
PHPDoc の @uses を使おう
intelliJ で可変関数がグレーアウトされてしまうのは、静的解析を基に未使用と判断されるからです。
そこで、 PHPDoc の @uses
を使って適切に呼び出し関係を補足してあげましょう。
可変関数が未使用関数ではなくなり、色が付きました。また、これでコードジャンプもできるようになりました。
最後に
PHP の可変関数について、intelliJ で表示される未使用警告の回避方法を説明しました。
長年運用されてきたソフトウェアは、使われなくなったコードが溜まってきてしまいます。Doc 以外にも、多くの言語で静的解析ツールが用意されていますので、それらを上手く駆使して無駄がないコードを保っていきましょう。