JM *_*ork 6 php static-variables magic-methods
是否可以测试PHP中的变量是否是静态的?我正在尝试创建一个__get
也看静态变量的魔术方法.我发现property_exists()
当变量也是静态时返回true.但我需要使用::
而不是->
我期望的?
可以通过Reflection测试变量是否为静态:
class Foo { static $bar; }
$prop = new ReflectionProperty('Foo', 'bar');
var_dump($prop->isStatic()); // TRUE
Run Code Online (Sandbox Code Playgroud)
但是,这仍然不允许您使用魔术方法__get
或__set
因为那些仅在对象上下文中工作.从魔术方法的PHP手册:
属性重载仅适用于对象上下文.这些魔术方法不会在静态上下文中触发.因此,不应将这些方法声明为静态.从PHP 5.3.0开始,如果其中一个魔术重载方法被声明为静态,则会发出警告.
另请参阅PHP内部邮件列表中有关介绍的讨论__getStatic
: