如何在PHP中使用$ this-> methodName调用父方法?

时间:2016-06-01 10:58:16

标签: php oop

我有两节课。一个是父母,另一个是孩子。两者都有相同的名称方法。问题是不使用$ this-> methodName调用父方法。

家长班

class Parent
{

    public function __construct()
    {
        $this->init();
    }

    // this function never get executed and why?
    public function init()
    {

       //do something

    }
}

儿童课

class Child extends Parent
{

   public function __construct()
   {
      parent::__construct();
      $this->init();
   }

   public function init()
   {
   // do something different
   }
}

如何在不使用parent :: init的情况下调用父方法?

3 个答案:

答案 0 :(得分:3)

您可以使用self来引用当前的课程。与$this相反,class ParentClass { public function __construct() { self::init(); } public function init() { echo 'parent<br/>'; } } 在运行时引用当前对象。

input:search

答案 1 :(得分:0)

<?php
    public function __construct(){
        parent::__construct();
        self::init();
    }
?>

另外在Parent类中也使用self来避免执行父init和子init。

答案 2 :(得分:0)

事情是parent::是有原因的,其中一个原因是处理你所遇到的“问题”(这不是问题)。

显然,如果你有一个名为myfunction()的函数的子类和一个名为myfunction()的函数的父类,如果你在孩子中使用$this->myfunction(),那么很明显会调用child的myfunction()函数,因为$this是对当前对象的引用。

使用parent没有任何害处,这是有原因的。