php - 关于 protected 可见性的奇怪工作 php 代码

标签 php visibility

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/

相关文章:

php - 如何避免在嵌套循环中执行 mysql 查询?

javascript - FullCalendar 后端 PHP/JS 到 symfony 3

php - 无法为 php 文件上传设置正确的文件权限

php 手动可见性示例混淆

java - 使用自限泛型的私有(private)访问

methods - 为什么 Vec::len 是方法而不是公共(public)属性?

matlab - Matlab绘图完成后如何修改不同图层的可见性?

php - 无法检索数据 laravel4(oneToMany)

javascript - 是否可以使用 javascript 操作在 php 脚本中声明的 ID?

c++ - 给定一个 C++ 嵌套私有(private)结构类型,是否有从文件范围静态函数访问它的策略?