__get()取私有属性的值,且仅取私有属性

时间: 2009-04-20  分类: php+Mysql  收藏
<?php
class Person
{
private $name;
private $age;
function Person($name,$age)
{
$this->name=$name;
$this->age=$age;
}
private function __get($preName)
/*
*代码最下面对于封装变量的调用如果没有这里的__get是
*不会显示的, __get可是让下面直接调用上面的封闭变量.
*说明:比如下面调用$name,当调用的时候会把值传到$preName
*那里,也就相当于用__get的方面在类的内部进行的调用,
*也就不是外部调用了,故不会出现调用封装变量错误.
*同样调用age也一样会传到这里.
*页面显示输出是在这一行:echo $this->$preName . '<BR />';
*注意里面的$preName是带着$号的
*/
{
echo $this->$preName . '<BR />';
}
}
$p = new Person('王者',20);
$p->name; //这里是调用封装变量,因为__get
$p->age;
?>
//__get只会调用私有属性,如果变量不是私有的就不会起作用
//如果private $name改成var private就只会显示20而不是显示王者了;那么__get就只会调用$age,下面的 $p->name;虽然是调用了,不过__get不会把他输出,而他又没有自己的输出,所以不会显示'王者';
分享到:

评论

昵 称: