__get__set__isset__unset 简单

<?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);

?>

  

原文地址:https://www.cnblogs.com/xiangxiaodong/p/2927483.html