call_user_func Call a user function given by the first parameter


call_user_func

(PHP 4, PHP 5)

call_user_funcCall a user function given by the first parameter

说明

mixed call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] )

Call a user defined function given by the function parameter.

参数

function

The function to be called. Class methods may also be invoked statically using this function by passing array($classname, $methodname) to this parameter. Additionally class methods of an object instance may be called by passing array($objectinstance, $methodname) to this parameter.

parameter

Zero or more parameters to be passed to the function.

Note:

Note that the parameters for call_user_func() are not passed by reference.

Example #1 call_user_func() example and references

<?php
error_reporting
(E_ALL);
function 
increment(&$var)
{
    
$var++;
}

$a 0;
call_user_func('increment'$a);
echo 
$a." ";

call_user_func_array('increment', array(&$a)); // You can use this instead before PHP 5.3
echo $a." ";
?>

以上例程会输出:

0
1

返回值

Returns the function result, or FALSE on error.

更新日志

版本 说明
5.3.0 The interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.

范例

Example #2 call_user_func() example

<?php
function barber($type)
{
    echo 
"You wanted a $type haircut, no problem ";
}
call_user_func('barber'"mushroom");
call_user_func('barber'"shave");
?>

以上例程会输出:

You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem

Example #3 call_user_func() using namespace name

<?php

namespace Foobar;

class 
Foo {
    static public function 
test() {
        print 
"Hello world! ";
    }
}

call_user_func(__NAMESPACE__ .'Foo::test'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'Foo''test')); // As of PHP 5.3.0

?>

以上例程会输出:

Hello world!
Hello world!

Example #4 Using a class method with call_user_func()

<?php

class myclass {
    static function 
say_hello()
    {
        echo 
"Hello! ";
    }
}

$classname "myclass";

call_user_func(array($classname'say_hello'));
call_user_func($classname .'::say_hello'); // As of 5.2.3

$myobject = new myclass();

call_user_func(array($myobject'say_hello'));

?>

以上例程会输出:

Hello!
Hello!
Hello!

Example #5 Using lambda function with call_user_func()

<?php
call_user_func
(function($arg) { print "[$arg] "; }, 'test'); /* As of PHP 5.3.0 */
?>

以上例程会输出:

[test]

注释

Note:

在函数中注册有多个回调内容时(如使用 call_user_func()call_user_func_array()),如在前一个回调中有未捕获的异常,其后的将不再被调用。

参见


«  bzwrite
» call_user_func_array
快速导航

Copyright © 2016 phpStudy |