class Example {
# Instance member
private $member;
# Class member
private static $member;
}
这将导致以下错误:
无法重新声明 Example::$member in ...
由于类和实例成员存在于不同的范围内,我发现这个错误有点出乎意料,我想知道它背后的动机。
ps 是否有其他具有相同限制的 OO 语言?
您可以使用反射来挖掘它
如果您获得属性列表,它将具有其他标志,例如isStatic
. 所以基本上属性必须是唯一的,无论它们是否是静态的。
您也可以访问静态函数,$this->name()
虽然看起来很丑陋。也许这是原因之一。
原因很简单:同名的静态成员和实例成员是不明确的。
例如,想象一下:
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));
}
}