面向对象之构造和析构方法

一、构造方法

构造方法用于完成创建对象时总要进行、首先来做的工作;创建对象的时候,要给对象进行初始化,这个时候就要调用我们的构造方法,构造方法是自动调用。

与普通成员方法的区别

  • 其名称永远是__construct();
  • 当创建对象时,它总是会立即被自动调用

一般构造函数是类里定义的第一个方法。但位于属性声明之后。

# 女娲造人
/* class Person 
{
    public $name = 'jack';
    public $sex = '男';
    public $info = '帅的令人发指'; // 这种属性都写死了
} */

class Person
{
    public $name;
    public $age;
    public $info;

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

    public function getDaXiao()
    {
        return ($this->age >= 18) ? 'da' : 'xiao';
    }
}

$jack = new Person('jack',18,'帅的令人发指');
$panan = new Person('panan',19,'帅的没头发');

友情提醒:PHP4以及其他编程语言中(比如C++),创建构造函数的方法是声明一个与类名相同的方法

二、析构函数

在页面结束、对象销毁的时候自动被调用。 当对象没有指向时,对象被销毁。

$p = null;

析构函数确实和构造函数以及其他方法有所不同,它不能接收任何参数

class test{
    public function __destruct()
    {
        echo '我是在页面结束,销毁对象的时候 触发的';
        echo "<br />这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";
    }
}
for ($i = 0; $i < 5; $i++) {
    echo "<br /> $i";
}

//
class Person {
   public function __destruct() {
      echo "<br />析构函数在这里执行<br />";
   }
}
$p = new Person();
//$p = null;
unset($p);
echo "是否看到被销毁,对象也被销毁呢?";
for ($i = 0; $i < 5; $i++) {
   echo "<br /> $i";
}