доступ к статическим методам с использованием имени класса переменной (PHP)

Я пытаюсь получить доступ к статическому методу, но используя переменную как имя класса. Это возможно? Кажется, у меня проблемы с этим. Я хочу сделать что-то вроде этого:

class foo { public static function bar() { echo 'test'; } } $variable_class_name = 'foo'; $variable_class_name::bar(); 

И я хочу, чтобы иметь возможность делать подобное, используя статические переменные.

Этот синтаксис поддерживается только в PHP 5.3 и более поздних версиях. Предыдущие версии не понимают этот синтаксис, поэтому ваша ошибка синтаксического анализа ( T_PAAMAYIM_NEKUDOTAYIM ссылается на оператор :: T_PAAMAYIM_NEKUDOTAYIM .

В предыдущих версиях вы можете попробовать call_user_func() , передав ему массив, содержащий имя класса и его имя метода:

 $variable_class_name = 'foo'; call_user_func(array($variable_class_name, 'bar')); 

Вы можете использовать отражение для PHP 5.1 и выше:

 class foo { public static $bar = 'foobar'; } $class = 'foo'; $reflector = new ReflectionClass($class); echo $reflector->getStaticPropertyValue('bar'); > foobar