Используя следующий код, завершение кода работает отлично!
class FooClass
{
public function run(){}
}
/**
* @method static FooClass foo(bool $param1 = false)
*/
class Test
{
public static function __callStatic($name, $arguments)
{
//Implementation code ..
}
}
//Code completes fine for FooClass methods ..
Test::foo()->run();
Но возможно ли в IDE (PhpStorm) завершить код, используя следующий стиль записи метода вызова php (фигурные скобки)?
//Code NOT completes fine ..
Test::{"foo"}();
Если так, то как? Спасибо за помощь!
PhpStorm не поддерживает динамические поля / методы. Для статического инструмента трудно отследить, к какому полю / методу действительно осуществляется доступ. Давайте посмотрим на более реалистичный пример.
function foo($str) {
//Code NOT completes fine ..
Test::{$str}()->run();
}
Вот как обычно выглядит динамический вызов. В реальном коде, $str
обычно представляет собой комбинацию внешнего ввода (например, из базы данных) и бизнес-логики. И то, и другое выходит за рамки статического анализа.
Других решений пока нет …