9.5访问函数
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所示。

图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为“属性值”。
上一篇:9.4构造函数
下一篇:9.6类的继承与接口
