查詢

Closure::call()函式—用法及示例

「 呼叫閉包函式,並傳遞指定的 $this 物件和引數列表 」


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

補充糾錯
上一個函式: Closure::bindTo()函式
下一個函式: Closure::fromCallable()函式
熱門PHP函式
分享連結