<?php
header("Content-type:text/html; charset:utf-8");
//PHP面向对象__get(), __set()的用法
/*一般来说,总是把类的属性定义为private,这更符合现实的逻辑。但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法“__unset()”。*/
class Person
{
private $name;
private $sex;
private $age;
private function __get($property_name)
{
echo "直接获取私有属性的时候,自动调用__get<BR>";
if(isset($this->$property_name)){
return ($this->$property_name);
}else
return (null);
}
private function __set($proeprty, $val)
{
echo "直接设置私有属性的时候,自动调用__set<BR>";
$this->$proeprty = $val;
}
private function __isset($name)
{
echo "isset()函数测试私有成员时,自动调用<BR>";
return isset($this->$name);
}
private function __unset($name)
{
echo "unset()删除私有成员时自动调用<BR>";
unset($this->$name);
}
}
$p1 = new Person();
$p1->name = "xlc";
$p1->sex = '男';
$p1->age = 22;
echo $p1->name;
echo $p1->sex;
echo $p1->age;
isset($p1->name);
unset($p1->name);
?>