Function handling Funkcje
PHP Manual

call_user_func

(PHP 4, PHP 5)

call_user_funcCall the callback given by the first parameter

Opis

mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

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

Parametry

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

Zwracane wartości

Returns the return value of the callback, or FALSE on error.

Rejestr zmian

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łady

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]

Notatki

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.

Zobacz też:


Function handling Funkcje
PHP Manual