Is it possible to test if a variable is static in PHP? I am trying create a magic method __get
that also looks at static variables. I find that property_exists()
returns true when a variable is static too. But I will need to use ::
instead of ->
I'd expect?
It is possible to test if a variable is static via Reflection:
class Foo { static $bar; }
$prop = new ReflectionProperty('Foo', 'bar');
var_dump($prop->isStatic()); // TRUE
However, that still won't allow you to use them with magic methods __get
or __set
, because those only work in object context. From the PHP Manual on Magic Methods:
Property overloading only works in object context. These magic methods will not be triggered in static context. Therefore these methods should not be declared static. As of PHP 5.3.0, a warning is issued if one of the magic overloading methods is declared static.
Also see this discussion on the PHP Internals Mailing List about introducing __getStatic
:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With