01魔术方法__get应用
<?php
class Student
{
//私有的成员属性
private $name = "张三";
private $age = 24;
//当访问不可访问属性时,__get()魔术方法会自动调用
public function __get($n)
{
return $this->$n;
}
}
//创建学生类对象
$obj = new Student();
//访问私有的属性
echo "{$obj->name}的年龄是{$obj->age}岁!";
02魔术方法__set应用
<?php
class 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应用
<?php
class 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应用
<?php
class 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应用
<?php
class 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应用
<?php
class Student
{
//私有的成员属性
private $name = "张三";
private $age = 24;
//用静态化方式访问不存在或不可访问的方法时,魔术方法__callStatic()自动调用
//参数:$func是传递过来的方法名称,$args是传递过来的参数数组
public static function __callStatic($func,$args)
{
echo "方法{$func}(".implode(',',$args).")不存在或不可访问!";
}
}
//用静态化方法调用showInfo()方法
Student::showInfo('张三四',24,'男');