PHP笔记:PHP类和对象之构造函数和析构函数

2018年9月30日16:41:12 2 1,452 次
摘要

PHP可以在类中使用__construct定义一个构造函数,每次创建对象时,会自动调用构造函数以完成该类的初始化操作(比如获取创建对象传递的参数);同样,php也可使用__destruct定义一个析构函数,在当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。

PHP可以在类中使用__construct定义一个构造函数,每次创建对象时,会自动调用构造函数以完成该类的初始化操作(比如获取创建对象传递的参数);同样,php也可使用__destruct定义一个析构函数,在当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。

比如:

class car{
function __construct($brand){
echo 'New Car\'s Brand is '.$brand;
}
function __destruct(){
echo 'Destruct function is called!';
}
}
$car = new car('VW'); // New Car's Brand is VW.
unset($car); // Destruct function is called!

而在子类中,如果定义了构造函数或析构函数,则不会调用父类的构造函数或析构函数,如果需要,应通过parent::__construct();或parent::__destruct()调用。

如下代码:

class car{
function __construct($brand){
echo 'New Car\'s Brand is '.$brand. '.';
}
function __destruct(){
echo 'Destruct function is called!';
}
}
class Truck extends Car {
    function __construct($brand,$name){
        parent::__construct($brand); // 调用父类构造函数
        echo 'The Car\'name is '.$name .'.';
    }
}
$car = new Truck('VW','Passat'); // New Car's Brand is VW.The Car'name is Passat
unset($car); // Destruct function is called!

注意,当PHP代码执行完毕以后,会自动回收与销毁对象,因此一般情况下不需要显式的去销毁对象。

avatar

评论已关闭!

目前评论:2   其中:访客  1   博主  1

    • avatar 吃肉小奶狗 3

      一直不明白继承和构造、析构函数,这下明白了。

        • avatar mr.z Admin

          @吃肉小奶狗 互相学习,以前也是懵懵懂懂。