Funcții de manipulare a funcțiilor
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

Descrierea

mixed call_user_func_array ( callback $function , array $param_arr )

Call a user defined function with the parameters in param_arr.

Parametri

function

The function to be called.

param_arr

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

Valorile întoarse

Returns the function result, or FALSE on error.

Istoria schimbărilor

Versiunea Descriere
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.

Exemple

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"));
?>

Exemplul de mai sus va afișa ceva similar cu:

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'));

?>

Exemplul de mai sus va afișa ceva similar cu:

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 */

?>

Exemplul de mai sus va afișa:

int(8)

Note

Notă:

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.

Notă:

Funcțiile de apel invers înregistrate cu astfel de funcții ca call_user_func() și call_user_func_array() nu vor fi apelate dacă există o excepție neinterceptată emisă într-un apel precedent.

Vedeți de asemenea


Funcții de manipulare a funcțiilor
PHP Manual