call_user_func
call_user_func
(PHP 4, PHP 5, PHP 7)
call_user_func - 调用第一个参数给出的回调
描述
mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
callback
通过第一个参数调用给定值,并将其余参数作为参数传递。
参数
callback
可调用的被调用。
parameter
要传递给回调的零个或多个参数。
注意:请注意,call_user_func()的参数不是通过引用传递的。 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"; ?> The above example will output: 0 1
返回值
返回回调的返回值。
Changelog
版本 | 描述 |
---|---|
5.3.0 | 像父母和自我这样的面向对象关键字的解释已经改变。以前,使用双冒号语法调用它们会发出E_STRICT警告,因为它们被解释为静态。 |
示例
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]
笔记
注意
:如果在以前的回调中存在未捕获的异常,则不会调用使用call_user_func()
和call_user_func_array()等函数注册的回调函数。
See Also
- call_user_func_array() - 用参数数组调用回调
- is_callable() - 验证变量的内容可以作为函数调用
- information about the callback type
- ReflectionFunction::invoke() - Invokes function
- ReflectionMethod::invoke() - Invoke
← call_user_func_array
create_function →