如何在PHP的子类中调用父构造函数?

在子类中调用父构造方法时,我们将面对两种情况。

情况1

如果子类定义了构造函数,则无法在子类中直接运行父类的构造函数。为了运行父构造函数,需要在子构造函数内调用parent::__ construct()。

示例

<?php
   class grandpa{
      public function __construct(){
         echo "I am in nhooo.com"."\n";
      }
   }
   class papa extends grandpa{
      public function __construct(){
         parent::__construct();
         echo "I am not in nhooo.com";
      }
   }
$obj = new papa();
?>
Output:
I am in nhooo.com
I am not in nhooo.com

说明

在上面的示例中,我们使用parent::__ construct()来调用父类的构造函数。

案例2

如果子级没有定义构造函数,则可以像常规的类方法一样从父类继承它(如果未声明为私有)。

示例

<?php
   class grandpa{
      public function __construct(){
         echo "I am in nhooo.com";
      }
   }
   class papa extends grandpa{
   }
   $obj = new papa();
?>

输出结果

I am in nhooo.com

说明

这里父类被隐式调用,因为在子类中我们没有在子类中声明任何构造函数。