可以在 PHP 中测试变量是否是静态的吗?
PHP 中是否可以测试变量是否是静态的?我正在尝试创建一个神奇的方法 __get ,它也查看静态变量。我发现当变量是静态时,property_exists() 也会返回 true。但我需要使用 ::
而不是我期望的 ->
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可以通过反射测试变量是否是静态的:
但是,这仍然不允许您将它们与魔术方法
__get
或__set
一起使用,因为它们只能工作在对象上下文中。 来自 PHP 魔法方法手册:另请参阅 PHP 内部邮件列表上关于引入
__getStatic
的讨论:It is possible to test if a variable is static via Reflection:
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:Also see this discussion on the PHP Internals Mailing List about introducing
__getStatic
:我认为您不能使用魔术 __get() 方法访问未声明的静态属性。它将引发 PHP 致命错误。至少 PHP 版本为 5.3。
当然,如果您尝试以静态 ClassName::$propertyName 方式访问该属性,这就是结果。
I don't think you can access undeclared static property using magic __get() method. It will raise PHP Fatal error. At least with PHP of version 5.3.
That's the result if you will try to access the property as static
ClassName::$propertyName
of course.