PHP魔术方法__call

成员方法不存在时候自动调用的魔术方法,php不支持多态,可以通过call实现伪多态。

<?
class a{
function show(){
echo 1;
}
function call($f,$args){
echo "__CALL";
}
}
$obj= new a;
$obj->k();
?>

输出 __CALL

也就是说实例化一个对象后,当调用这个对象的成员方法存在时,则直接调用其成员方法,但是当成员方法不存在时,将转而去调用call方法。
同时call必须有两个参数,这个参数名可以随意取,但是为了方便我们通常取为$name和$args

当成员方法不存在时,call将被调用,同时,这个不存在的方法名称会作为字符串传递给第一个参数(这里第一个参数是$name),将调用时传递的参数作为列表传递给第二个参数(这里第二个参数是$args)。

猜你喜欢

转载自blog.51cto.com/13708834/2127877