【发布时间】:2017-06-19 12:04:52
【问题描述】:
从 PHP mannual 第二段,它说:
static:: 介绍它的作用域。
我相应地尝试了以下示例:
class Father {
public function test(){
echo static::$a;
}
}
class Son extends Father{
protected static $a='static forward scope';
public function test(){
parent::test();
}
}
$son = new Son();
$son->test(); // print "static forward scope"
它按描述工作。但是,以下示例会引发致命错误:
class Father {
public function test(){
echo static::$a;
}
}
class Son extends Father{
private static $a='static forward scope';
public function test(){
parent::test();
}
}
// print "Fatal erro: Cannot access private property Son::$a"
$son = new Son();
$son->test();
我的主要问题是如何在这里解释 scope 这个词?如果static 将Son 的作用域引入Father,那么为什么私有变量对Father 仍然不可见?
variable 作用域和visibility 作用域有两个东西吗?如果这听起来很有趣,我是 PHP 新手,抱歉。
【问题讨论】:
-
尽管
introducing scopeprivate属性对任何其他类都不可见。 -
@ponury-kostek tks 供参考。我读了。但我认为我的问题与那个帖子不同。
-
是指一个类名解析的范围,不是变量访问的范围。
标签: php