PHPでは、静的メソッドは静的メソッドと非静的メソッドの両方で使用でき、非静的メソッドは非静的メソッドでのみ使用できます。そのため、動的メソッドを静的に呼び出すとE_STRICT
エラーが発生します。
例えば:
<?php
class Example
{
public function foo() {
return "Foo";
}
public static function bar() {
return "Bar";
}
}
$ex = new Example();
// Non-static call
echo $ex->bar();
// Static call on a non-static method
// PHP Error "Strict standards: Non-static method should not be called statically"
// ERROR NOT DETECTED BY PHPSTORM!
echo Example::foo();
最後の行は、この PHP エラーを生成します (これはロジックです)。
私は現在、一部の PHP ファイルで非静的メソッドを静的に呼び出す大規模な PHP アプリケーションに取り組んでいます。非常に古いバージョンの PHP では問題ありませんでしたが、最新の PHP バージョンに移行することにしました。
すべてのプロジェクト ファイルを手動でチェックして、この不正な構文が長すぎる (+ 1000 ファイル) ことを特定します。
PhpStorm の組み込みコード検査機能は、分析されたソース コード内のこのタイプのエラーを検出しません。なんで?何かを設定する必要がありますか?どのように?
以下は、PhpStorm での私の PHP コード検査構成です。
ありがとう!