如果子类自身有构造方法,则调用子类本身的.如果子身无构造方法.则调用父类的.
<?php
class a
{
  Function __construct ()
  {
   echo "a";
  }
}
class b extends a
{
  Function __construct ()
  {
    echo "b";
  }
}
$test =new b;

解决方案 »

  1.   

    补充一下:
    如果你的子类在定义的时候,没有声明__construct()方法,那么会使用父类的构造函数。
    <?php
    class A{
    public $a;
    public function __construct(){
    $this->a = "A";
    }
    public function showA(){
    echo $this->a;
    }
    }
    class B extends A {
    function showB(){
    $this->showA();
    }
    }$b = new B();
    $b->showB();//打印A
    ?>
    如果你的子类显式的定义了__construct()方法,那么实例化的时候只会调用子类的构造函数。
    <?php
    class A{
    public $a;
    public function __construct(){
    $this->a = "A";
    }
    public function showA(){
    echo $this->a;
    }
    }
    class B extends A {
    public function __construct(){
    }
    function showB(){
    $this->showA();
    }
    }$b = new B();
    $b->showB();//什么都不显示
    ?>
    如果在这种情况下你需要调用父类的构造函数,那么就加上parent::__construct();如下<?php
    class A{
    public $a;
    public function __construct(){
    $this->a = "A";
    }
    public function showA(){
    echo $this->a;
    }
    }
    class B extends A {
    public function __construct(){
    parent::__construct();
    }
    function showB(){
    $this->showA();
    }
    }$b = new B();
    $b->showB();//输出A
    ?>