函数名: call_user_func()
函数功能: 动态地调用用户自定义函数或方法
适用版本: PHP 4 >= 4.0.4, PHP 5, PHP 7
用法示例:
// 示例1: 调用全局函数 function sayHello($name) { echo "Hello, " . $name; }
call_user_func("sayHello", "John"); // 输出: Hello, John
// 示例2: 调用类的静态方法 class Greeting { public static function sayHello($name) { echo "Hello, " . $name; } }
call_user_func(array("Greeting", "sayHello"), "John"); // 输出: Hello, John
// 示例3: 调用对象的方法 class Greeting { public function sayHello($name) { echo "Hello, " . $name; } }
$greeting = new Greeting(); call_user_func(array($greeting, "sayHello"), "John"); // 输出: Hello, John
// 示例4: 调用匿名函数 $greetFunc = function($name) { echo "Hello, " . $name; };
call_user_func($greetFunc, "John"); // 输出: Hello, John
说明: call_user_func() 函数可以接收一个或多个参数,第一个参数是要调用的函数或方法的名称,后面的参数是传递给函数或方法的参数。
如果要调用的函数是一个全局函数,直接传递函数名即可。
如果要调用的方法是一个静态方法,需要传递一个包含类名和方法名的数组。
如果要调用的方法是一个对象的方法,需要传递一个包含对象实例和方法名的数组。
如果要调用的函数是一个匿名函数,直接传递匿名函数对象即可。
注意: 从 PHP 7.0.0 版本开始,建议使用可变函数调用语法代替 call_user_func() 函数,语法更简洁,性能更好。例如以下示例等同于示例1:
$sayHello = "sayHello"; $sayHello("John"); // 输出: Hello, John