9.4 构造函数
上面的例子中,对实例$xiaoming的属性$name进行赋值,还需要通过使用接口setname($name)进行操作,如$xiaoming->setname("XiaoMing")。如果想在生成实例$xiaoming的同时就对此实例的属性$name进行赋值,该怎么办呢?
这时就需要构造函数“__construct()”了。这个函数的特性是,当通过关键字new生成实例的时候,它就会被调用执行。
它的用途就是经常对一些属性进行初始化,也就是给一些属性进行初始化的赋值。
以下案例介绍构造函数的使用方法和技巧。
【例9.2】(实例文件:ch10\9.2.php)
<html> <head> <title> 构造函数</title> </head> <body> <?php class guests{ private $name; private $gender; function __construct($name,$gender){ $this->name = $name; $this->gender = $gender; } function getname(){ return $this->name; } function getgender(){ return $this->gender; } }; $xiaoming = new guests("赵大勇","男"); $lili = new guests("方芳芳","女"); echo $xiaoming->getname()."\t".$xiaoming->getgender()."<br />"; echo $lili->getname()."\t".$lili->getgender(); ?> </body> </html>
运行结果如图9-2所示。
要记住的是,构造函数是不能返回值的。
有构造函数,就有“析构函数”(destructor)。它是在对象被销毁的时候被调用执行的。但是因为PHP在每个请求的最终都会把所有资源释放,所以析构函数的意义是有限的。不过,它在执行某些特定行为时还是有用的,如在对象被销毁时清空资源或者记录日志信息。
以下两种情况destructor可能被调用执行。
(1)代码运行时,当所有的对于某个对象的reference(引用)被毁掉的情况下。
(2)当代码执行到最终,并且PHP停止请求的时候,调用destructor函数。