PHP 中是否可以测试变量是否是静态的?我正在尝试创建一个神奇的方法__get
它还查看静态变量。我发现property_exists()
当变量也是静态时返回 true。但我需要使用::
代替->
我会期待吗?
可以通过反射测试变量是否是静态的:
class Foo { static $bar; }
$prop = new ReflectionProperty('Foo', 'bar');
var_dump($prop->isStatic()); // TRUE
然而,这仍然不允许你用魔法方法使用它们__get
or __set
,因为它们仅在对象上下文中起作用。来自 PHP 魔法方法手册: https://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members
属性重载仅适用于对象上下文。这些魔术方法不会在静态上下文中被触发。因此,这些方法不应声明为静态。从 PHP 5.3.0 开始,如果其中一种神奇重载方法被声明为静态,则会发出警告。
另请参阅 PHP 内部邮件列表上有关引入的讨论__getStatic
:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)