为什么';PHP允许类具有同名的类和实例成员吗?
这将导致以下错误: 无法在中重新声明示例::$member 由于类和实例成员生活在不同的作用域中,我发现这个错误有点出乎意料,我想知道它背后的动机 p、 有没有其他OO语言具有相同的定义?您可以使用 如果您得到属性列表,它将具有附加标志,如为什么';PHP允许类具有同名的类和实例成员吗?,php,oop,Php,Oop,这将导致以下错误: 无法在中重新声明示例::$member 由于类和实例成员生活在不同的作用域中,我发现这个错误有点出乎意料,我想知道它背后的动机 p、 有没有其他OO语言具有相同的定义?您可以使用 如果您得到属性列表,它将具有附加标志,如isStatic。所以基本上属性必须是唯一的,不管它们是静态的还是非静态的 您可以使用 如果您得到属性列表,它将具有附加标志,如isStatic。所以基本上属性必须是唯一的,不管它们是静态的还是非静态的 您也可以使用$this->name()访问静态函数,尽管
isStatic
。所以基本上属性必须是唯一的,不管它们是静态的还是非静态的 您可以使用
如果您得到属性列表,它将具有附加标志,如
isStatic
。所以基本上属性必须是唯一的,不管它们是静态的还是非静态的 您也可以使用$this->name()
访问静态函数,尽管看起来很难看。这可能是一个原因。您也可以使用$this->name()
访问静态函数,尽管看起来很难看。这可能是一个原因。原因很简单:同名的静态成员和实例成员不明确
例如,想象一下:
class Example {
# Instance member
private $member;
# Class member
private static $member;
}
原因很简单:同名的静态成员和实例成员不明确 例如,想象一下:
class Example {
# Instance member
private $member;
# Class member
private static $member;
}
您是否有另一个意外命名为Example的类?如果没有,你还有没有更多的代码可以发布来查看?还有哪里声明了
$class_member
?我不明白,我看不出代码会抛出错误的原因。示例不正确。我很抱歉。我明白了,是的,你不能像那样声明变量。这两个项需要唯一的名称。是否有另一个意外命名的类示例?如果没有,你还有没有更多的代码可以发布来查看?还有哪里声明了$class_member
?我不明白,我看不出代码会抛出错误的原因。示例不正确。我很抱歉。我明白了,是的,你不能像那样声明变量。这两个项目需要唯一的名称。我想象了它,然后又想象了另一件事——一个既有get\u class\u vars
又有get\u instance\u vars
的PHP。我更喜欢后者。@EmanuilRusev这只是一个例子。反射是另一个很好的理由。我想象了它,然后又想象了另一件事——一个既有get\u class\u vars
又有get\u instance\u vars
的PHP。我更喜欢后者。@EmanuilRusev这只是一个例子。反思是另一个很好的理由,这很奇怪。但是,如果您尝试使用变量(而不是方法)执行此操作,它会抛出异常。这是非常奇怪的。但是,如果您尝试使用变量(而不是方法)执行此操作,它会引发异常。