(PHP 4, PHP 5)
call_user_func — Call the callback given by the first parameter
Calls the callback
given by the first parameter and passes
the remaining parameters as arguments.
callback
The callable to be called.
parameter
Zero or more parameters to be passed to the callback.
Informacja:
Note that the parameters for call_user_func() are not passed by reference.
Przykład #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";
call_user_func_array('increment', array(&$a)); // You can use this instead before PHP 5.3
echo $a."\n";
?>Powyższy przykład wyświetli:
0 1
Returns the return value of the callback, or FALSE
on error.
Wersja | Opis |
---|---|
5.3.0 |
The interpretation of object oriented keywords like parent
and self has changed. Previously, calling them using the
double colon syntax would emit an E_STRICT warning because
they were interpreted as static.
|
Przykład #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");
?>
Powyższy przykład wyświetli:
You wanted a mushroom haircut, no problem You wanted a shave haircut, no problem
Przykład #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'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0
?>
Powyższy przykład wyświetli:
Hello world! Hello world!
Przykład #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'); // As of 5.2.3
$myobject = new myclass();
call_user_func(array($myobject, 'say_hello'));
?>
Powyższy przykład wyświetli:
Hello! Hello! Hello!
Przykład #5 Using lambda function with call_user_func()
<?php
call_user_func(function($arg) { print "[$arg]\n"; }, 'test'); /* As of PHP 5.3.0 */
?>
Powyższy przykład wyświetli:
[test]
Informacja:
Wywołania zwrotne zdefiniowane za pomocą takich funkcji jak call_user_func() i call_user_func_array() nie zostaną aktywowane jeśli w poprzednim wywołaniu zostanie wygenerowany nieobsłużony wyjątek.