函式名稱:Closure::fromCallable()
適用版本:PHP 7.1.0及以上版本
用法:Closure::fromCallable() 函式用於將可呼叫物件(callable)轉換為閉包(closure)。它接受一個可呼叫物件作為引數,並返回一個閉包。
示例:
// 示例1:將一個普通函式轉換為閉包
function greet($name) {
echo "Hello, " . $name . "!";
}
$closure = Closure::fromCallable('greet');
$closure('Alice'); // 輸出:Hello, Alice!
// 示例2:將一個物件方法轉換為閉包
class Person {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function greet() {
echo "Hello, " . $this->name . "!";
}
}
$person = new Person('Bob');
$closure = Closure::fromCallable([$person, 'greet']);
$closure(); // 輸出:Hello, Bob!
// 示例3:將一個匿名函式轉換為閉包
$callable = function($message) {
echo $message;
};
$closure = Closure::fromCallable($callable);
$closure("Hello"); // 輸出:Hello
注意事項:
Closure::fromCallable()
函式僅接受可呼叫物件(包括普通函式、類方法、匿名函式等),不接受字串形式的函式名或函式陣列。- 轉換後的閉包與原始可呼叫物件具有相同的行為和引數。