call_user_method

(PHP 3 >= 3.0.3, PHP 4, PHP 5)

call_user_method --  对特定对象调用用户方法(已废弃)

说明

mixed call_user_method ( string method_name, object &obj [, mixed parameter [, mixed ...]] )

警告

call_user_method() 函数从 PHP 4.1.0 开始已经停用,使用 call_user_func() 函数和 array(&$obj, "method_name") 语法代替。

从用户定义的 obj 对象中调用 method_name 指的方法。下边是用法示例,我们定义了一个类,接着创建了一个对象实例,然后使用 call_user_method() 间接调用它的 print_info 方法。

<?php
class Country {
    var
$NAME;
    var
$TLD;
    
    function
Country($name, $tld)
    {
        
$this->NAME = $name;
        
$this->TLD = $tld;
    }

    function
print_info($prestr="")
    {
        echo
$prestr . "Country: " . $this->NAME . "\n";
        echo
$prestr . "Top Level Domain: " . $this->TLD . "\n";
    }
}

$cntry = new Country("Peru", "pe");

echo
"* Calling the object method directly\n";
$cntry->print_info();

echo
"\n* Calling the same method indirectly\n";
call_user_method("print_info", $cntry, "\t");
?>

参见 call_user_func_array()call_user_func()


add a note add a note User Contributed Notes
j dot h at h-elektro dot de
05-Feb-2007 08:11
It does not work to use Pointers as Arguments:

<?php
class abc{
   function
func(&$argument)  {
      
$argument="It works";
   }
}

$obj=new abc;
$argument_to_be_changed="No it doesnt";
call_user_method("func", $obj, $argument_to_be_changed);

echo
"Result".$argument_to_be_changed;
?>

The result is: "No it doesnt".

Regards
der Jan
jonathanMAPS_ON at NO_SPAMsharpmedia dot net
13-Mar-2001 11:06
You can also dynamically call functions through variable variables...for example:

<?php
class xyz{
   function
mybar($str)
   {
     echo
$str;
   }
}
$xyz = new xyz;
$foo = 'bar';

$xyz->{'my'.$foo}('dynamic call to function');
?>
paulo at emd dot com dot br
18-Sep-2000 12:12
This function is very similar to this:

$method="Print";
$object->$method($param1,$param2);

Note the extra $ after the ->
jmcastagnetto at php dot net
21-Aug-2000 12:04
You can pass a variable number of parameters to a function, use a definition like:

function mymethod ($v1, $v2, $v3="", $v4="")

and then you can pass 2, 3 or 4 parameters. This is explained in the "Functions" section of the manual.

See also the PHP4 functions: func_num_args(), func_get_arg(), and func_get_args(), and examples therein