PHP新手,受保护的函数错误

时间:2017-03-14 15:34:43

标签: php class object protected

所以,我是PHP的新手,我知道这对很多人来说都是一个简单的问题,但我不确定一件事。

如果我有这个,新对象$a$d不能回显function foo(),因为它受到保护,所以这意味着只有子类可以使用它,OBJECT可以“T? 这对我来说有点混乱。

对不起,如果这是一个愚蠢的问题,但我没有一个php朋友问这个。

<?php

    class A {
        protected function foo(){
            echo "AAA";
        }
    }

    class D extends A { }

    $a = new A();
    $d = new D();
    $a->foo();
    $d->foo();
?>

2 个答案:

答案 0 :(得分:0)

  

因为它受到保护,所以它意味着只有子类可以使用它,OBJECT不能吗?

对象实例。这些不等同。

对于您的问题 - 只能从外部访问public种方法。所以你不能$d->foo(),但是D类可以有公共方法x(),它只会$this->foo(),而x就是这个类的一部分,所以允许它到达protected元素。

答案 1 :(得分:0)

检查一下。这就是它的工作方式。

class A {
    protected function foo(){
        echo "AAA";
    }
}

class D extends A {
    public function foo2() {
        $a = new A();
        $a->foo();
    }
 }

//$a = new A();
$d = new D();
//$a->foo();
$d->foo2();
相关问题