【发布时间】:2012-12-05 14:51:22
【问题描述】:
如何自动检索类命名空间?
魔术 var __NAMESPACE__ 不可靠,因为在子类中没有正确定义。
例子:
class Foo\bar\A -> __NAMESPACE__ === Foo\bar
class Ping\pong\B extends Foo\bar\A -> __NAMESPACE__ === Foo\bar(应该是 Ping\pong)
ps:我注意到使用__CLASS__ 时出现了同样的错误行为,但我使用get_called_class() 解决了...有类似get_called_class_namespace() 的东西吗?如何实现这样的功能?
更新:
我认为解决方案是我自己的问题,因为我意识到 get_called_class() 返回完全限定的类名,因此我可以从中提取名称空间:D
...无论如何,如果有更有效的方法,请告诉我;)
【问题讨论】:
-
您的解决方案是我在个人代码中必须做的。 codepad.viper-7.com/EgObtf
-
你描述的不是错误的行为。查看这些常量的含义:php.net/language.constants.predefined - 当您找到解决问题的方法时,您可以回答自己的问题。
-
看看这个。我想这就是你的意思:stackoverflow.com/questions/2317343/…
-
我想这就是你所追求的:stackoverflow.com/questions/2317343/…
标签: php oop introspection