call_user_func()
动态地调用用户自定义函数或方法
函数名: 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