php8.5
Home/ Manual/ funchand / functions/ call_user_func

call_user_func

PHP function Edit on GitHub ✎

(PHP 4, PHP 5, PHP 7, PHP 8)

Call the callback given by the first parameter

Description

call_user_func(callable $callback, mixed ...$args): mixed

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

Parameters

callback

The callable to be called.

args

Zero or more parameters to be passed to the callback.

Note

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

call_user_func() example and references

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

The above example will output:

output
Warning: Parameter 1 to increment() expected to be a reference, value given in …
0
1
2

Return Values

Returns the return value of the callback.

Examples

call_user_func() example

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

The above example will output:

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

call_user_func() using namespace name

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

?>

The above example will output:

output
Hello world!
Hello world!

Using a class method with call_user_func()

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

?>

The above example will output:

output
Hello!
Hello!
Hello!

Using lambda function with call_user_func()

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

The above example will output:

output
[test]

Notes Func-callback-exceptions

See Also

Source: reference/funchand/functions/call-user-func.xml · from the official PHP manual (php/doc-en)