构造函数
当对象在创建的时候,将会自动调用构造方法__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,当指向一个对象的引用全部被销毁之后,整个对象才会被完全销毁