类/对象 函数
在线手册:中文  英文

call_user_method_array

(PHP 4 >= 4.0.5, PHP 5)

call_user_method_array 调用一个用户方法,同时传递参数数组(已废弃)

说明

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

call_user_method_array() 函数自 PHP 4.1.0 起已废弃,使用 call_user_func_array() 函数和 array(&$obj, "method_name") 语法代替。

从用户定义的 obj 对象中调用 method_name 所指的方法,同时使用 paramarr 中的参数。

参见 call_user_func_array()call_user_func()


类/对象 函数
在线手册:中文  英文

用户评论:

wloche at hotmail dot com (2010-07-15 01:33:37)

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)

brudinie at googlemail dot com (2009-03-25 07:23:15)

<?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>', ' '';
        
$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);   
}

?>

leonwinter at gmail dot com (2006-10-02 04:45:39)

If you this function will be deleted in future php releases you can use this function:

<?
       function _call_user_method_array($name, $obj, $params) {
           // get params
           $txt = "";
           foreach($params as $nr => $el) {
               $txt.='$params['.$nr."], ";
           }
           $txt = substr($txt, 0, strlen($txt)-2);
           // run it
           return eval('return call_user_method($name, $obj, '.$txt.');');           
       }
?>

Hope this helps somebody.

易百教程