call_user_method_array()
(PHP 4 >= 4.0.5, PHP 5)
以参数列表的数组,调用用户方法
WarningThis function wasDEPRECATEDin PHP 4.1.0,andREMOVEDin PHP 7.0.0.
Alternatives to this function include:
说明
call_user_method_array(string $method_name,object &$obj,array $params): mixed
参数
- $method_name
 要调用的方法名称。
- $obj
 要调用的$method_name所在的对象object。
- $params
 数组形式的一组参数。
范例
代替call_user_method_array()
<?php call_user_func_array(array($obj, $method_name), $params); ?>
参见
call_user_func_array()调用回调函数,并把一个数组参数作为回调函数的参数call_user_func()把第一个参数作为回调函数调用
You don't have to write a new function, <?php call_user_func_array(array($obj, $method_name), $params); ?> works pretty fine! (to my mind, 'eval' fucntion should be avoided almost all the time)
<?php
class a{
  function b($a,$b,$c){
    echo $a." ".$b." ".$c;
  
  }
  
  function c(Array $a, Array $b){
  
    print_r($a);
    
    echo "<br />";
    
    print_r($b);
  
  }
  
  function cuf(Array $a, Array $b){
  
    print_r($a);
    
    echo "<br />";
    
    print_r($b);
  
  }
}
$a = new a;
// ### Just String Params ###
$array = array("Musa ATALAY",":","Software Developer");
$str = NULL;
foreach($array AS $v){
  if(is_string($v)){
    $str.="'".$v."',";
  }else{
    $str.=$v;
  }
}
$str = rtrim($str,",");
$run = "echo \$a->b(".$str.");";
echo "<br />";
eval($run);
$str = NULL;
/* 
OUTPUT : 
Musa ATALAY : Software Developer 
*/
// ### With Array Params ###
$array = array(array("Musa ATALAY",":","Software Developer"),array("Musa ATALAY",":","Software Developer"));
foreach($array AS $i => $v){
  if(is_string($v)){
    $str.="'".$v."',";
  }else{
    $str.="\$array[".$i."],";
  }
}
$str = rtrim($str,",");
$run = "echo \$a->c(".$str.");";
echo "<br />";
eval($run);
/*
 OUTPUT : 
Musa ATALAY : Software Developer
Musa ATALAY : Software Developer
*/
?>
