函式名: 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