02--学习PHP面向对象--构建函数和析构函数

构建函数

对象的赋值操作

<?php
class Human{
    //类的属性
    public $name;
    public $age;
    //类的方法
    public function sayName(){
        echo $this->name;
    }
}
//例化一个对象
$man = new Human();
$man->age = 20;
$man->name = 'Tom';
var_dump($man); //object(Human)#1 (2) { ["name"]=> string(3) "Tom" ["age"]=> int(20) }

---------------分割线--------------分割线--------------

通过上面的方式可以为对象的属性赋值,适合单个对象,如何在创建对象是自动为其赋值?

可以通过PHP的魔术方法(详细介绍--https://segmentfault.com/a/1190000007250604) function __construtct() 实现

__construtct会在创建对象时自动调通该函数,

<?php
class Human{
    //类的属性
    public $name;
    public $age;
    //类的方法

    public function __construct($name,$age)
    {
        echo '我是构造函数';
        $this->name = $name;
        $this->age = $age;
    }

    public function sayName(){
        echo $this->name;
    }
}
//例化一个对象
$man = new Human('Tom',20);
$man->sayName();  //我是构造函数Tom

在没有手动调用构造函数的情况下,我们自动为创造的对象赋值了;

构造函数通常用于初始化对象的属性值
 
---------------分割线--------------分割线--------------
 
析构函数同样是系统自动调用,当对象被释放时会自动调用该方法(对象的垂死挣扎)
<?php
class Human{
    //类的属性
    public $name;
    public $age;
    //类的方法

    public function __construct($name,$age)
    {
        $this->name = $name;
        $this->age = $age;
    }

    function __destruct() {
        echo __FUNCTION__,'<br/>';
    }

    public function sayName(){
        echo $this->name;
    }
}
//例化一个对象
$manA = new Human('Tom',20);
$manB = new Human('TomA',20);
echo '手动释放<br/>';
unset($manA);
echo '脚本结束<br/>';

//运行结果
//手动释放 //__destruct //脚本结束 //__destruct

因此在脚本结束时,系统会回收脚本所占资源,析构函数就会被调用

析构函数并不常用,但是可以析构方法允许在销毁一个对象之前执行的一些操作或完成一些功能(我们在这里就是echo一下)

 

猜你喜欢

转载自www.cnblogs.com/carefulyu/p/12677420.html