Function handling Functions
PHP Manual

call_user_func_array

(PHP 4 >= 4.0.4, PHP 5)

call_user_func_arrayCall a user function given with an array of parameters

Description

mixed call_user_func_array ( callback $function , array $param_arr )

Call a user defined function with the parameters in param_arr.

Parameters

function

The function to be called.

param_arr

The parameters to be passed to the function, as an indexed array.

Return Values

Returns the function result, or FALSE on error.

Changelog

Version Description
5.3.0 The interpretation of object oriented keywords like parent and self have changed. Previously calling them using the double colon syntax would emit an E_STRICT warning because they was interpreted as static.

Examples

Example #1 call_user_func_array() example

<?php
function foobar($arg$arg2) {
    echo 
__FUNCTION__" got $arg and $arg2\n";
}
class 
foo {
    function 
bar($arg$arg2) {
        echo 
__METHOD__" got $arg and $arg2\n";
    }
}


// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one""two"));

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo"bar"), array("three""four"));
?>

The above example will output something similar to:

foobar got one and two
foo::bar got three and four

Example #2 call_user_func_array() using namespace name

<?php

namespace Foobar;

class 
Foo {
    static public function 
test($name) {
        print 
"Hello {$name}!\n";
    }
}

// As of PHP 5.3.0
call_user_func_array(__NAMESPACE__ .'\Foo::test', array('Hannes'));

// As of PHP 5.3.0
call_user_func_array(array(__NAMESPACE__ .'\Foo''test'), array('Philip'));

?>

The above example will output something similar to:

Hello Hannes!
Hello Philip!

Example #3 Using lambda function

<?php

$func 
= function($arg1$arg2) {
    return 
$arg1 $arg2;
};

var_dump(call_user_func_array($func, array(24))); /* As of PHP 5.3.0 */

?>

The above example will output:

int(8)

Notes

Note:

Referenced variables in param_arr are passed to the function by a reference, others are passed by a value. In other words, it does not depend on the function signature whether the parameter is passed by a value or by a reference.

Note:

Callbacks registered with functions such as call_user_func() and call_user_func_array() will not be called if there is an uncaught exception thrown in a previous callback.

See Also


Function handling Functions
PHP Manual