update : 2015.11.03
php.shukuma.com

검색:
 
 
Call the callback given by the first parameter

call_user_func

(PHP 4, PHP 5, PHP 7)

call_user_funcCall the callback given by the first parameter

설명

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

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.

Note:

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

// You can use this instead
call_user_func_array('increment', array(&$a));
echo 
$a."\n";
?>

위 예제의 출력:

0
1

반환값

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

변경점

버전 설명
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.

예제

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

위 예제의 출력:

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'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo''test')); // As of PHP 5.3.0

?>

위 예제의 출력:

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'); // As of 5.2.3

$myobject = new myclass();

call_user_func(array($myobject'say_hello'));

?>

위 예제의 출력:

Hello!
Hello!
Hello!

Example #5 Using lambda function with call_user_func()

<?php
call_user_func
(function($arg) { print "[$arg]\n"; }, 'test'); /* As of PHP 5.3.0 */
?>

위 예제의 출력:

[test]

주의

Note:

call_user_func()call_user_func_array() 등으로 등록한 콜백은 이전 콜백 실행시에 처리하지 않은 예외(uncaught exception)가 존재할 경우 호출되지 않습니다.

참고