call_user_func

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

call_user_funcCall the callback given by the first parameter

Descrição

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

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

Parâmetros

callback

The callable to be called.

args

Zero or more parameters to be passed to the callback.

Nota:

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

Exemplo #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."\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";
?>

O exemplo acima produzirá:

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

Valor Retornado

Returns the return value of the callback.

Exemplos

Exemplo #2 call_user_func() example

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

O exemplo acima produzirá:

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

Exemplo #3 call_user_func() 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'));

?>

O exemplo acima produzirá:

Hello world! Hello world!

Exemplo #4 Using a class method with call_user_func()

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

?>

O exemplo acima produzirá:

Hello! Hello! Hello!

Exemplo #5 Using lambda function with call_user_func()

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

O exemplo acima produzirá:

[test]

Notas

Nota:

Callbacks registrados com funções como call_user_func() e call_user_func_array() não serão chamados se houver uma exceção não capturada que foi lançada em um callback anterior.

Veja Também

To Top