php:调用父方法时出现问题

php:调用父方法时出现问题,php,Php,在这种情况下,他们也会做同样的事情。但是,通常最好使用$this->basicAttribute()。 这些电话中的每一个都是这样做的: $this->basicAttribute()--调用basicAttribute()的子实现(如果存在),否则会查找最接近的祖先以查找实现(在这种情况下,只有父级和子级,因此它会调用父级) parent::basicAttribute()--调用最近祖先的实现(在本例中,再次调用父级)。这将忽略子类中basicAttribute()的实现,因此建议仅在重写父

在这种情况下,他们也会做同样的事情。但是,通常最好使用$this->basicAttribute()。 这些电话中的每一个都是这样做的:

  • $this->basicAttribute()--调用basicAttribute()的子实现(如果存在),否则会查找最接近的祖先以查找实现(在这种情况下,只有父级和子级,因此它会调用父级)
  • parent::basicAttribute()--调用最近祖先的实现(在本例中,再次调用父级)。这将忽略子类中basicAttribute()的实现,因此建议仅在重写父函数并希望显式调用父函数时使用它

  • 其实很简单。扩展类时,新类将继承该类的所有属性和方法(属于
    私有的属性和方法除外)。被扩展的类称为父类,被扩展的类称为子类

    所以,如果我们有一个类似这样的类:

    <?php
    class HTML
    {
    protected $name;
    public $id;
    private $with;
    protected function basicAttribute()
    {
    return "name='$this->name' id='$this->id'";
    }
    }
    Class HTML_div extends HTML
    {
    public function __construct($id , $name)
    {
    $this->id = $id;
    $this->name = $name;
    }
    public function getDiv($content)
    {
    $basicAttribute = $this->basicAttribute();
    echo "<div $basicAttribute >$content</div>";
    }
    }
    $objDiv = new HTML_div("bloc_main" , 'avc');
    $objDiv->getDiv('this is and example of inheritance in php');
    
    我们将其扩展为:

    HTML
        basicAttribute()
    
    因此,当您从
    HTML\u div
    调用
    parent::basicAttribute()
    时,实际上是在调用
    HTML
    的方法

    我相信这个例子应该用一种容易理解的方式来解释:

    HTML_div extends HTML
        basicAttribute() // This method is automatically inherited from HTML
                         // which means that you do not have to create it yourself
    

    如果子类
    HTML\u div
    未重写父类“
    basicAttribute()
    方法,则它们是等效的。但是,如果子类重写该方法,则直接调用父类将不会执行被重写的子方法执行的任何不同操作。
    class A {
        function test() {
            echo 'A';
        }
    }
    class B extends A {
        function test() {
            echo 'B';
        }
        function parentTest() {
            parent::test();
        }
    }
    $b = new B;
    $b->test(); // 'B'
    $b->parentTest(); // 'A'