Metode __invoke

Metode ajaib __invoke memungkinkan instance kelas untuk dipanggil seperti fungsi. Ketika objek dipanggil seperti fungsi, PHP secara otomatis memanggil metode ini. Metode dapat menerima parameter dan mengembalikan nilai, seperti fungsi biasa.

Sintaks

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

Contoh

Mari buat kelas dengan metode __invoke dan panggil objek seperti fungsi:

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

Hasil eksekusi kode:

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);
?>

Hasil eksekusi kode:

php8

Contoh

Memeriksa apakah objek dapat 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));
?>

Hasil eksekusi kode:

phpfalse
true

Lihat Juga

  • metode __construct,
    yang merupakan konstruktor kelas
  • metode __toString,
    yang memungkinkan objek untuk direpresentasikan sebagai string