PHP.nl

call_user_func

call_user_func

Call the callback given by the first parameter

mixed **call_user_func** callable $callback mixed $args

Calls the given by the first parameter and passes the remaining parameters as arguments. callback

callback The to be called. callable

argsZero or more parameters to be passed to the callback.

Opmerking: > Note that the parameters for are not passed by reference.

   `call_user_func`**Voorbeeld:  example and references**
<?php
error_reporting(E_ALL);
function increment(&$var)
{
    $var++;
}

$a = 0;
call_user_func('increment', $a);
echo $a."\n";

// it is possible to use this instead
call_user_func_array('increment', array(&$a));
echo $a."\n";

// it is also possible to use a variable function
$increment = 'increment';
$increment($a);
echo $a."\n";
?>
Warning: Parameter 1 to increment() expected to be a reference, value given in …
0
1
2

Returns the return value of the callback.

Voorbeeld: example

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

Voorbeeld: using namespace name

<?php

namespace Foobar;

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

call_user_func(__NAMESPACE__ .'\Foo::test');
call_user_func(array(__NAMESPACE__ .'\Foo', 'test'));

?>
Hello world!
Hello world!

**Voorbeeld: Using a class method with **

<?php

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

$classname = "myclass";

call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello');

$myobject = new myclass();

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

?>
Hello!
Hello!
Hello!

**Voorbeeld: Using lambda function with **

<?php
call_user_func(function($arg) { print "[$arg]\n"; }, 'test');
?>
[test]

call_user_func_array``is_callableVariable functionsReflectionFunction::invoke``ReflectionMethod::invoke