php call_user_func的简介

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

一个 PHP 函数用函数名字符串来传递。可以传递任何内置的或者用户自定义的函数,除了语言结构如array(),echo(),empty(),eval(),exit(),isset(),list(),print() 和 unset()。

一个对象的方法以数组的形式来传递,数组的下标 0 指明对象名,下标 1 指明方法名。

对于没有实例化为对象的静态类,要传递其方法,将数组 0 下标指明的对象名换成该类的名称即可。

除了普通的用户定义的函数外,也可以使用create_function()来创建一个匿名的回调函数(callback)。

 

<?php 
// 普通的回调函数
function my_callback_function() {
    echo 'hello world!';
}
// 回调方法
class MyClass {
    static function myCallbackMethod() {
        echo 'Hello World!';
    }
}
// Type 1: 简单的回调
call_user_func('my_callback_function'); 
// Type 2: 静态类回调
call_user_func(array('MyClass', 'myCallbackMethod')); 
// Type 3: 类方法回调
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
// Type 4: 调用类方法 (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');
// Type 5: 相对静态类方法的调用(As of PHP 5.3.0)
class A {
    public static function who() {
        echo "A\n";
    }
}
class B extends A {
    public static function who() {
        echo "B\n";
    }
}
call_user_func(array('B', 'parent::who')); // A
?>

  

posted @ 2012-04-18 09:37  源来如此  阅读(143)  评论(0)    收藏  举报