如何在php的父类中使用protected?

时间:2013-06-22 08:08:37

标签: php

在本教程(http://www.techflirt.com/tutorials/oop-in-php/visibility-in-php-classes.html)中,有人说:

  

受保护:具有受保护可见性的方法或变量只能是   在派生类中访问。或者在儿童班中换句话说。   受保护将用于继承过程。

这里(http://php.net/manual/en/language.oop5.visibility.php)据说:

  

protected只能在类本身内部访问   继承和父类。

我们经常在继承的类中使用Protected,所以我想知道它是如何工作的:受类访问受保护,有人能给我举个例子吗?感谢。

2 个答案:

答案 0 :(得分:3)

protected确实允许继承链中的任何类访问。实际上只有一种情况是父/子应该/应该访问子属性或方法:父语句声明并调用protected方法,而子语句覆盖它。

class Foo {

    public function bar() {
        $this->baz();
    }

    protected function baz() { }

}

class Child extends Foo {

    protected function baz() {
        echo 'Ha!';
    }

}

致电$child->bar()时,这要求Foo::bar可以访问Child::baz。父母不应以任何其他方式“了解”其子女,因此无需访问其中的某些内容。

答案 1 :(得分:2)

受保护的可以是从任何继承的类定义它的类访问。

例如

 class test {
     protected function foo() {

     }

     public function foobar() {
          $this->foo(); //is allowed here
     }
 }

 class testa extends test {
     public function bar() {
          $this->foo(); //is allowed here
     }
 }