class Fruit { protected $blend; public function WillItBlend() { return $this->blend; } public static function MakeFruit() { $objF = new Fruit(); $objF->blend = true; return $objF; } } $fruit = Fruit::MakeFruit(); echo $fruit->WillItBlend();
为什么这条线可以工作
$objF->blend = true;而不是抛出 fatal error ?
最佳答案
可见性修饰符在类级别起作用,而不是在对象级别起作用。这也意味着同一类的对象可以访问彼此的私有(private)位。
PHP 交互提示的示例:
php > class Foo {
private $bar;
public function __construct() { $this->bar = rand(1, 100); }
public function baz($another_foo) { echo $another_foo->bar, '-', $this->bar; }
}
php > $a = new Foo();
php > $b = new Foo();
php > $a->baz($b);
86-70
关于php - 关于 protected 可见性的奇怪工作 php 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5415958/