函式名稱:Closure::call()
適用版本:5.4.0及以上版本
函式用法:
Closure::call() 函式用於呼叫閉包函式,並傳遞指定的 $this 物件和引數列表。它允許你在閉包函式中,使用不同的 $this 物件來呼叫。
語法:
Closure::call($closure, $newThis, ...$parameters)
引數說明:
- $closure:要呼叫的閉包函式。
- $newThis:要繫結到閉包函式中的 $this 物件。
- $parameters:要傳遞給閉包函式的引數列表。
返回值: 該函式返回閉包函式的結果。
示例: 假設有一個包含私有屬性的類 Person,我們想在不改變私有屬性的情況下,呼叫私有方法 display()。可以使用 Closure::call() 來實現:
class Person {
private $name;
private function display() {
echo 'My name is ' . $this->name;
}
}
$person = new Person();
$person->name = 'John';
$closure = function() {
$this->display();
};
Closure::call($closure, $person);
上述示例中,我們定義了一個閉包 $closure,然後使用 Closure::call() 來呼叫它,並傳遞 $person 物件作為 $this 引數。閉包中的 $this 物件被繫結到 $person 物件,因此可以成功呼叫私有方法 display(),輸出結果為 "My name is John"。
需要注意的是,$this 物件必須是一個物件例項,而不能是類名或 null。