【PHP】构造函数和析构函数

本文介绍了PHP编程中的构造函数和析构函数。构造函数在对象创建时自动调用,用于初始化对象;析构函数则在对象销毁时执行,讨论了如何触发对象销毁以及PHP的垃圾回收机制对析构函数的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造函数

当对象在创建的时候,将会自动调用构造方法__construct(), 在PHP中构造方法不可以进行重载

<?php

class Human {
    //属性是直接的量, 但是不可以是表达式的运算结果
    public $name = null;
    public $gender = null;
    //构造函数注意是两个下划线,在创建对象的时候就发挥作用
    public function __construct($name, $gender) {
        $this->name = $name;
        $this->gender = $gender;
    }
}


$a = new Human("李四", "女");
?>

new ClassName($args) ,将会把数据传送给构造方法, 然后构造方法用参数来影响对象, 然后返回给对象

析构函数

析构函数在对象销毁的时候执行,销毁对象对象的方式有这样几种,unset. null, false

//最终$d也被释放了
<?php
  
class Main {
  public function __construct() {
    echo "横空出世", "<br/>";
  }
  public function __destruct() {
    // TODO: Implement __destruct() method.
    echo "终究没能完成逆袭", '<br/>';
  }
  
}

$a = new Main();
$b = new Main();
$c = new Main();
$d = new Main();
unset($a);
$b = false;
$c = null;

?>

析构函数与垃圾回收机制

<?php
class Main {
  public function __construct() {
    echo "横空出世", "<br/>";
  }
  public function __destruct() {
    echo "终究没能完成逆袭", '<br/>';
  }
}

$a = new Main();

$b = $c = $d = $a;
unset($a);

echo "<hr/>";
?>

通过运行上面这个函数,当我么销毁掉$a的时候,对象并没有销毁,而是等到整个类运行完了之后,才销毁, 这是因为我们使用的unset销毁的只是指向对象的引用而已,除了指向对象的a之外还有b, c, d,当指向一个对象的引用全部被销毁之后,整个对象才会被完全销毁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值