call_user_method_array

(PHP 4 >= 4.0.5, PHP 5)

call_user_method_arrayCall a user method given with an array of parameters [deprecated]

Description

mixed call_user_method_array ( string $method_name , object &$obj , array $params )
Warning

The call_user_method_array() function is deprecated as of PHP 4.1.0.

Parameters

method_name

The method name being called.

obj

The object that method_name is being called on.

params

An array of parameters.

Examples

Example #1 call_user_method_array() alternative

<?php
call_user_func_array
(array($obj$method_name), $params);
call_user_func_array(array(&$obj$method_name), $params); // PHP 4
?>

See Also

add a note add a note

User Contributed Notes 3 notes

up
6
wloche at hotmail dot com
4 years ago
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)
up
1
musaatalay dot mobile at gmail dot com
1 month ago
<?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
*/

?>
up
-5
brudinie at googlemail dot com
5 years ago
<?php

/**
* @param string $func - method name
* @param object $obj - object to call method on
* @param boolean|array $params - array of parameters
*/
function call_object_method_array($func, $obj, $params=false){
    if (!
method_exists($obj,$func)){       
       
// object doesn't have function, return null
       
return (null);
    }
   
// no params so just return function
   
if (!$params){
        return (
$obj->$func());
    }       
   
// build eval string to execute function with parameters       
   
$pstr='';
   
$p=0;
    foreach (
$params as $param){
       
$pstr.=$p>0 ? ', ' : '';
       
$pstr.='$params['.$p.']';
       
$p++;
    }
   
$evalstr='$retval=$obj->'.$func.'('.$pstr.');';
   
$evalok=eval($evalstr);
   
// if eval worked ok, return value returned by function
   
if ($evalok){
        return (
$retval);
    } else {
        return (
null);
    }       
    return (
null);  
}

?>
To Top