PHP实战(1)

 abstract class OverloadableObject{

function __call($name,$args){
$method=$name."_".count($args);
if(!method_exists($this, $method)){
throw new Exception("call to undefined method".get_class($this)."::$method");
}
return call_user_func_array(array($this,$method), $args);
}
}
class Multiplier extends OverloadableObject{
function multiplier_2($one,$two){
return $one*$two;
}
function multiplier_3($one,$two,$three){
return $one*$two*$three;
}
}
$multi=new Multiplier;
echo $multi->multiplier(5,6)."\n";
echo $multi->multiplier(5,6,3)."\n";
 
__call($function,$args):函数名称和参数
call_user_func_array():用来调用一个函数或者一个类的方法。当调用一个函数时,参数形式为function_name,$args(多个参数是为数组形式),当调用的是类的方法时,参数形式为array(class_name,function_name),$args (多个参数是为数组形式).

你可能感兴趣的:(__call)