単体テスト用にインスタンス メソッドに変更する必要がある静的メソッドを持つクラスがあります。ただし、それらを静的に呼び出すコードを変更することはできません。そのため、関数を静的および動的に呼び出すことができるように、ファサードを実装しようとしています (Laravel と同様)。私のコード自体は機能していますが、PHPStorm は静的呼び出しについて不平を言っています。これは、テスト子クラスと phpunit テストを含む私のファサード クラスです。
abstract class Facade
{
/**
* Handle dynamic, static calls to the object.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public static function __callStatic($method, $parameters)
{
$instance = new static;
return call_user_func_array([$instance, $method], $parameters);
}
}
class Foo extends Facade
{
/**
* @param string $param1
* @return string
*/
public function TestMethod1($param1)
{
return 'Test: '.$param1;
}
}
class FooTest extends \PHPUnit_Framework_TestCase
{
public function testFacade()
{
$param1 = 'ok';
$result = Foo::TestMethod1($param1);
$this->assertEquals('Test: '.$param1, $result);
}
}
Foo で phpdoc @method を使用し、TestMethod1 メソッドで @static を使用しようとしましたが、どちらも機能しないようです。PHPStorm が静的呼び出しについて文句を言わないようにするにはどうすればよいですか? インスペクションをオフにする以外にこれを処理する方法はありますか?