Можно ли проверить, является ли переменная статичной в PHP?

Можно ли проверить, является ли переменная статичной в PHP? Я пытаюсь создать магический метод __get который также смотрит на статические переменные. Я обнаружил, что property_exists() возвращает true, когда переменная тоже статическая. Но мне нужно будет использовать :: вместо -> я бы ожидал?

Solutions Collecting From Web of "Можно ли проверить, является ли переменная статичной в PHP?"

Можно проверить, является ли переменная статической с помощью Reflection:

 class Foo { static $bar; } $prop = new ReflectionProperty('Foo', 'bar'); var_dump($prop->isStatic()); // TRUE 

Однако это все равно не позволит вам использовать их с магическими методами __get или __set , потому что они работают только в контексте объекта. Из руководства PHP по магическим методам:

Перегрузка объектов работает только в контексте объекта. Эти магические методы не будут инициироваться в статическом контексте. Поэтому эти методы не должны быть объявлены статическими. Начиная с PHP 5.3.0, предупреждение выдается, если один из методов магии перегрузки объявлен статическим.

Также см. Это обсуждение в списке рассылки PHP Internals о введении __getStatic :

Я не думаю, что вы можете получить доступ к незаявленному статическому свойству с помощью магического метода __get (). Это вызовет ошибку PHP Fatal. По крайней мере, с PHP версии 5.3.

Это результат, если вы попытаетесь получить доступ к свойству как статическое ClassName::$propertyName конечно.