例子:
<?php
class Test{
//__cal调用了一个未定义的方法时,自动运行该方法,$funName返回方法名,$params返回方法的参数
function __call($funName,$params){
var_dump($funName,$params);
echo "你调用了一个未定义的方法";
}
//__get调用了一个未定义的属性,自动运行该方法,$valueNama返回属性名
function __get($valueName){
var_dump($valueName);
echo "你调用了一个未定义的属性";
}
//__set,给一个未定义的属性赋值了,自动运行该方法,$pName返回属性名,$value返回属性值
function __set($pName,$pvalue){
var_dump($pName,$pvalue);
echo "你给一个未定义的属性赋值了";
}
}
$ob = new Test();
//调用了一个未定义的方法fun1()
$ob->fun1(1,2,3);
echo "<hr/>";
//调用了一个未定义的属性a
$ob->a;
echo "<hr/>";
//给一个未定义的属性a赋值123
$ob->a=123;
?>
图: