Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';PHP允许类具有同名的类和实例成员吗?_Php_Oop - Fatal编程技术网

为什么';PHP允许类具有同名的类和实例成员吗?

为什么';PHP允许类具有同名的类和实例成员吗?,php,oop,Php,Oop,这将导致以下错误: 无法在中重新声明示例::$member 由于类和实例成员生活在不同的作用域中,我发现这个错误有点出乎意料,我想知道它背后的动机 p、 有没有其他OO语言具有相同的定义?您可以使用 如果您得到属性列表,它将具有附加标志,如isStatic。所以基本上属性必须是唯一的,不管它们是静态的还是非静态的 您可以使用 如果您得到属性列表,它将具有附加标志,如isStatic。所以基本上属性必须是唯一的,不管它们是静态的还是非静态的 您也可以使用$this->name()访问静态函数,尽管

这将导致以下错误:

无法在中重新声明示例::$member

由于类和实例成员生活在不同的作用域中,我发现这个错误有点出乎意料,我想知道它背后的动机

p、 有没有其他OO语言具有相同的定义?

您可以使用

如果您得到属性列表,它将具有附加标志,如
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这只是一个例子。反思是另一个很好的理由,这很奇怪。但是,如果您尝试使用变量(而不是方法)执行此操作,它会抛出异常。这是非常奇怪的。但是,如果您尝试使用变量(而不是方法)执行此操作,它会引发异常。