class Example {
# Instance member
private $member;
# Class member
private static $member;
}
这会导致以下错误:
无法重新声明Example :: $ member in ...
由于类和实例成员生活在不同的范围内,我发现错误有点意外,我想知道它背后的动机。
P.S。是否有其他OO语言具有相同的限制?
答案 0 :(得分:1)
您可以使用reflection
进行挖掘如果获得属性列表,则会有其他标记,如isStatic
。所以基本上属性必须是唯一的,无论它们是否是静态的。
答案 1 :(得分:1)
您也可以使用$this->name()
访问静态函数,看起来很丑陋。也许这是一个原因。
答案 2 :(得分:1)
原因很简单:具有相同名称的静态和实例成员不明确。
例如,想象一下:
class Example {
# Instance member
private $member;
# Class member
private static $member;
public function AmbiguousCaller() {
//What should be returned?
return get_class_vars(get_class($this));
}
}