Kaedah __invoke

Kaedah ajaib __invoke membolehkan contoh kelas dipanggil sebagai fungsi. Apabila objek dipanggil sebagai fungsi, PHP secara automatik memanggil kaedah ini. Kaedah ini boleh menerima parameter dan mengembalikan nilai, seperti fungsi biasa.

Sintaks

phpclass MyClass {
  public function __invoke(...$args) {
    // pelaksanaan
  }
}

Contoh

Mari buat kelas dengan kaedah __invoke dan panggil objek sebagai fungsi:

php<?php
  class Greeter {
    public function __invoke($name) {
      return "Hello, $name!";
    }
  }
  
  $greet = new Greeter();
  echo $greet('John');
?>

Keputusan pelaksanaan kod:

php'Hello, John!'

Contoh

Penggunaan __invoke dengan beberapa parameter:

php<?php
  class Calculator {
    public function __invoke($a, $b) {
      return $a + $b;
    }
  }
  
  $calc = new Calculator();
  echo $calc(5, 3);
?>

Keputusan pelaksanaan kod:

php8

Contoh

Menyemak sama ada objek boleh dipanggil menggunakan is_callable:

php<?php
  class Test {}
  
  $obj1 = new Test();
  $obj2 = new class { public function __invoke() {} };
  
  var_dump(is_callable($obj1));
  var_dump(is_callable($obj2));
?>

Keputusan pelaksanaan kod:

phpfalse
true

Lihat juga

  • kaedah __construct,
    yang merupakan pembina kelas
  • kaedah __toString,
    yang membolehkan objek diwakilkan sebagai rentetan