文章教程

9.5访问函数

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

9.5 访问函数

另外一个很好用的函数是访问函数(accessor)。由于OOP思想并不鼓励直接从类的外部访问类的属性,以强调封装性,所以可以使用__get和__set函数来达到此目的,也就是所说的访问函数。无论何时,类属性被访问和操作,访问函数都会被激发。通过使用它们,可以避免直接对类属性的访问。

以下案例介绍访问函数的使用方法和技巧。

【例9.3】(实例文件:ch10\9.3.php)

  <html>
  <head>
  <title> 访问函数</title>
  </head>
  <body>
  <?php
    class guests{
       public $property;
       function __set($propName,$propValue){
            $this->$propName = $propValue;
       }
         function __get($propName){
             return $this->$propName;
       }
    };
    $xiaoshuai = new guests;
    $xiaoshuai->name = "刘小帅";
    $xiaoshuai->gender = "男性";
    $dingdang = new guests;
    $dingdang->name = "丁叮当";
    $dingdang->gender = "女性";
    $dingdang->age = 28;
    echo $xiaoshuai->name." 是 ".$xiaoshuai->gender."<br />";
    echo $dingdang->name." 是一位 ".$dingdang->age." 岁 ".$dingdang->gender."<br />";
  ?>
  </body>
  </html>

运行结果如图9-3所示。

image

图9-3 程序运行结果

【案例分析】

(1)$xiaoshuai为类guest的实例。直接添加属性name和gender,并且赋值。如$xiaoshuai->name = "刘小帅"; $xiaoshuai->gender = "男性";,此时,类guest中的__set函数被调用。$dingdang实例为同样的过程。另外,$dingdang实例添加了一个对象属性age。

(2)echo命令中使用到的对象属性,如$xiaoshuai->name等,则是调用了类guest中的__get函数。

【讲解知识点】

此例中,__set函数的格式为:

  function __set($propName,$propValue){
            $this->$propName = $propValue;
  }

__get函数的格式为:

  function __get($propName){
             return $this->$propName;
  }

其中,$propName为“属性名”,$propValue为“属性值”。

教程类别