array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'it', ), 'this' => array ( 0 => 'function.call-user-func.php', 1 => 'call_user_func', 2 => 'Call the callback given by the first parameter', ), 'up' => array ( 0 => 'ref.funchand.php', 1 => 'Function handling Funzioni', ), 'prev' => array ( 0 => 'ref.funchand.php', 1 => 'Function handling Funzioni', ), 'next' => array ( 0 => 'function.call-user-func-array.php', 1 => 'call_user_func_array', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/funchand/functions/call-user-func.xml', ), 'history' => array ( ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); contributors($setup); ?>

call_user_func

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

call_user_funcCall the callback given by the first parameter

Descrizione

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

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

Elenco dei parametri

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.

Example #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";
?>

Il precedente esempio visualizzerà:

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

Valori restituiti

Returns the return value of the callback.

Esempi

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

Il precedente esempio visualizzerà:

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

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

?>

Il precedente esempio visualizzerà:

Hello world!
Hello world!

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

?>

Il precedente esempio visualizzerà:

Hello!
Hello!
Hello!

Example #5 Using lambda function with call_user_func()

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

Il precedente esempio visualizzerà:

[test]

Note

Nota:

I callback registrati alle funzioni come call_user_func() e call_user_func_array() non saranno invocati se un'eccezione non gestita è trasmessa da un callback precedente.

Vedere anche: