文章教程

9.4构造函数

9/17/2020 9:40:31 PM 人评论 次浏览

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所示。

image

图9-2 程序运行结果

要记住的是,构造函数是不能返回值的。

有构造函数,就有“析构函数”(destructor)。它是在对象被销毁的时候被调用执行的。但是因为PHP在每个请求的最终都会把所有资源释放,所以析构函数的意义是有限的。不过,它在执行某些特定行为时还是有用的,如在对象被销毁时清空资源或者记录日志信息。

以下两种情况destructor可能被调用执行。

(1)代码运行时,当所有的对于某个对象的reference(引用)被毁掉的情况下。

(2)当代码执行到最终,并且PHP停止请求的时候,调用destructor函数。

教程类别