<?php
header("Content-type:text/html;charset=utf-8");
class Person {
//下面是人的成员属性,都是封装的私有成员
private $name; //人的名子
private $sex; //人的性别
private $age; //人的年龄
//__get()方法用来获取私有属性
public function __get($property_name) {
echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";
if (isset($this->$property_name)) {
return($this->$property_name);
} else {
return(NULL);
}
}
//__set()方法用来设置私有属性
public function __set($property_name, $value) {
echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";
$this->$property_name = $value;
}
//__call调用未定义的方法执行
public function __call($name, $arguments) {
echo "你所调用的函数:$name(参数:<br />";
var_dump($arguments);
echo ")不存在!";
}
//__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。
public function __callStatic($name, $arguments) {
echo "你所调用的静态函数:$name(参数:<br />";
var_dump($arguments);
echo ")不存在!";
}
}
$p1 = new Person();
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值
$p1->name = "张三";
$p1->sex = "男";
$p1->age = 20;