ฟังก์ชัน forward_static_call

ฟังก์ชัน forward_static_call ช่วยให้สามารถเรียกใช้เมธอดแบบสแตติกของคลาสได้ โดยใช้ Late Static Binding พารามิเตอร์แรก คือ callback function ในรูปแบบอาร์เรย์ [คลาส, เมธอด] หรือสตริงที่มีชื่อเมธอด และพารามิเตอร์ต่อมาคืออาร์กิวเมนต์สำหรับเมธอดที่ถูกเรียก

ไวยากรณ์

phpforward_static_call(callable $callback, mixed ...$args): mixed

ตัวอย่าง

การเรียกเมธอดแบบสแตติกผ่าน forward_static_call:

php<?php
class A {
  public static function test() {
    return static::class;
  }
}

class B extends A {}

$res = forward_static_call(['B', 'test']);
echo $res;
?>

ผลลัพธ์จากการรันโค้ด:

php'B'

ตัวอย่าง

การส่งอาร์กิวเมนต์เข้าไปในเมธอดที่ถูกเรียก:

php<?php
class Calculator {
  public static function add($a, $b) {
    return $a + $b;
  }
}

$res = forward_static_call(['Calculator', 'add'], 5, 3);
echo $res;
?>

ผลลัพธ์จากการรันโค้ด:

php8

ดูเพิ่มเติม

  • ฟังก์ชัน call_user_func,
    ซึ่งเรียกใช้ callback function
  • ฟังก์ชัน forward_static_call_array,
    ซึ่งทำงานคล้ายกับ forward_static_call แต่รับอาร์กิวเมนต์ในรูปแบบอาร์เรย์