/**
* 魔术方法,所有魔术方法只要符合触发条件就会调用。
* 本质意义:在于开发者和调用者对类的控制权。
*/
class Magic
{
function __construct()
{
echo ” 构造方法 ,在类 实例化 时调用(只要实例化类就会调用)”.'<br>’;
}
function __destruct()
{
echo “析构方法,在程序执行完后调用”.'<br>’;
}
public function __get($a)
{
//$a为传入的不可见属性
echo “访问获取(读取)不可见属性时,被触发(调用)”.'<br>’.$a.'<br>’;
}
public function __set($a,$b)
{
//$a为传入的不可见属性,$b为传入的额值
echo “当对一个不可见属性赋值时调用”.'<br>’.$a.’——–‘.$b.'<br>’;
}
public function __isset($d)
{
//$d为传入的不可见属性
echo “当调用isset()、empty()方法判断一个不可见属性时自动调用”.$d.'<br>’;
}
public function __unset($e)
{
echo “销毁(调用unset()方法)一个不可见属性时调用”.$e.'<br>’;
}
}
$magic = new Magic();
// $magic->lina;//lina作为参数传到__get()中,也作为__get()值
// $magic->zhangwei = ‘lvziqiao’;//__set()中有2个参数,第一个作为属性,第二个作为值。
isset($magic->hejiong);
总结:有魔术方法的存在,开发者可以对调用这个类增加权限,从而增加安全性。