01魔术方法__get应用
<?phpclass Student{ //私有的成员属性 private $name = "张三"; private $age = 24; //当访问不可访问属性时,__get()魔术方法会自动调用 public function __get($n) { return $this->$n; }}//创建学生类对象$obj = new Student();//访问私有的属性echo "{$obj->name}的年龄是{$obj->age}岁!";
02魔术方法__set应用
<?phpclass Student{ //私有的成员属性 private $name = "张三"; private $age = 24; //当给不可访问的属性赋值时,__set()魔术方法自动调用 public function __set($n,$v) { $this->$n = $v; }}//创建学生类对象$obj = new Student();//修改私有属性$obj->name = "刘明明";$obj->age = 29;var_dump($obj);
03魔术方法__isset应用
<?phpclass Student{ //私有的成员属性 private $name = "张三"; private $age = 24; //当对不可访问的属性应用isset()或empty()时,__isset()会自动调用 public function __isset($n) { return isset($this->$n); }}//创建学生类对象$obj = new Student();//判断私有属性是否存在if(isset($obj->name)){ echo "存在";}else{ echo "不存在或不可访问";}
04魔术方法__unset应用
<?phpclass Student{ //私有的成员属性 private $name = "张三"; private $age = 24; //当对私有属性应用unset()时,魔术方法__unset()自动调用 public function __unset($n) { unset($this->$n); }}//创建学生类对象$obj = new Student();//删除对象属性unset($obj->name);var_dump($obj);
05魔术方法__call应用
<?phpclass Student{ //私有的成员属性 private $name = "张三"; private $age = 24; //当访问不存在或不可访问的方法时,魔术方法__call()自动调用 //参数:$func是传递过来的方法名称,$args是传递过来的参数数组 public function __call($func,$args) { echo "方法{$func}(".implode(',',$args).")不存在或不可访问!"; }}//创建学生类对象$obj = new Student();//调用一个不存在的方法$obj->showInfo("张三",24);
06魔术方法__callStatic应用
<?phpclass Student{ //私有的成员属性 private $name = "张三"; private $age = 24; //用静态化方式访问不存在或不可访问的方法时,魔术方法__callStatic()自动调用 //参数:$func是传递过来的方法名称,$args是传递过来的参数数组 public static function __callStatic($func,$args) { echo "方法{$func}(".implode(',',$args).")不存在或不可访问!"; }}//用静态化方法调用showInfo()方法Student::showInfo('张三四',24,'男');