call_user_func

call_user_func

(PHP 4, PHP 5)

call_user_funcCall a user function given by the first parameter

说明

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

Call a user defined function given by the function parameter.

参数

function

The function to be called. Class methods may also be invoked statically using this function by passing array($classname, $methodname) to this parameter. Additionally class methods of an object instance may be called by passing array($objectinstance, $methodname) to this parameter.

parameter

Zero or more parameters to be passed to the function.

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

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

以上例程会输出:

0
1

返回值

Returns the function result, 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 ";
}
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! ";
    }
}

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

$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] "; }, 'test'); 
?>

以上例程会输出:

[test]

注释

Note:

在函数中注册有多个回调内容时(如使用 call_user_func()call_user_func_array()),如在前一个回调中有未捕获的异常,其后的将不再被调用。

参见


  • call_user_func
  • call_user_func_array
  • create_function
  • forward_static_call
  • forward_static_call_array
  • function_exists
  • func_get_arg
  • func_num_args
  • get_defined_functions
  • register_shutdown_function
  • register_tick_function
  • unregister_tick_function
  • PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道

    无数据提示还没有评论,楼主喊你快去抢前排~~~我要评论
    微信扫码登陆

    打开 微信
    扫一扫登录