PhpStormはコードを検査しておかしなものはいろいろ警告してくれて有り難いのですが、ちょっとうるさすぎることがあります。
そのひとつに、パラメタの値を使ってない場合の警告があります。場合によっては本当に使わないのだけどだからといってパラメタを削るわけにはいかないこともあります。
例えばLaravelで独自のバリデータを定義する Validator::extend
ではバリデート処理を定義するための無名関数にいろいろ渡されてきますが、結局の所そのパラメタの値である $value
だけしか使わないことがよくあります。
PhpStormの機能としてこれを黙らせるには以下のような方法があります。
- Preferenceで設定する。オプションで無名関数についてだけ黙らせることも可能。
- アノテーション
/** @noinspection PhpUnusedParameterInspection */
を使う
でもどちらもちょっと範囲が広すぎて、上の例だと $value
以外の3つのパラメタについてだけ黙らせたいのですがうまくいきません。Perferenceはそもそも全体に影響しますし、@noinspection
アノテーションでもブロックの最後までが影響範囲になってしまうのでパラメタごとに抑止するかしないか切り替えることはできないようです。
そこで考えたのが以下の方法です。
Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
assert([$attribute, $parameters, $validator]); // unused
return $value === 'foo'
});
使ってないとおこられるのなら使えば黙るんだろうということですね。PHP7だと zend.assertions
を-1にしとけば assert()
のコード生成がされなくなるので本番系などではそうしとけば性能への影響はないはず。やりすぎ?
PHPにも他の言語でよくある使わないパラメタを明示する方法(たとえば function (_, $value, _, _)
みたいの)があるといいんですけどね。