为了避免当调用的方法不存在时产生错误,可以使用 __call() 方法来避免。该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去
该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $args 则以数组的方式接收不存在方法的多个参数
function __call($func_name, $args)
{
echo "你所调用的函数:$func_name(参数:<br />";
var_dump($args);
echo ")不存在!";
}
可利用该函数实现伪重载
<?php
class a
{ function __call($name,$args)
{
if($name=="f")
{
switch(count($args))
{
case 0:$this->f0();break;//$this指当前类
case 1:$this->f1($args[0]);break;
case 2:$this->f2($args[0],$args[1]);break;
default:$this->err();break;
}
}
} function f0(){
echo "it's f0"; }
function f1($p1){
echo "it's f1";
echo $p1;
}
function f2($p1,$p2){
echo "it's f2";
echo $p1;
}
function err()
{
echo "函数不存在";
}
}
$a=new a();
$a->f(true,1);