class Car {
public $i;
//增加构造函数与析构函数
function __construct($i){
$this->i = $i;
print "我是Car构造函数$this->i
";
echo "<br>";
}
function __destruct(){
print "我是Car析构函数$this->i
";
echo "<br>";
}
}
class Truck extends Car{
function __construct(){
print "我是Truck的构造函数
";
echo "<br>";
parent::__construct(2);
}
}
$car = new Car(1);
$truck = new Truck();
我是Car构造函数1
我是Truck的构造函数
我是Car构造函数2
我是Car析构函数2
我是Car析构函数1
先实例化car,执行car的构造函数
实例化trunk,执行trunk的构造函数,在trunk中调用的父类构造函数并执行父类构造函数
执行析构函数顺序入栈顺序相反,“先进后出”,trunk后实例化,先从栈中弹出,执行析构函数,由于trunk没有析构函数,则执行父类的析构函数car2,如果trunk中有析构函数,覆盖类父类的析构函数,执行trunk中的析构函数,然后执行第一次实例化的car对象的析构函数
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…