A __invoke metódus

A mágikus __invoke metódus lehetővé teszi egy osztály példányának függvényként való meghívását. Amikor egy objektumot függvényként hívnak meg, a PHP automatikusan meghívja ezt a metódust. A metódus paramétereket fogadhat és értéket adhat vissza, mint egy közönséges függvény.

Szintaxis

phpclass MyClass {
  public function __invoke(...$args) {
    // megvalósítás
  }
}

Példa

Hozzunk létre egy osztályt __invoke metódussal és hívjuk meg az objektumot függvényként:

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

A kód végrehajtásának eredménye:

php'Hello, John!'

Példa

A __invoke használata több paraméterrel:

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

A kód végrehajtásának eredménye:

php8

Példa

Objektum meghívhatóságának ellenőrzése a is_callable segítségével:

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

A kód végrehajtásának eredménye:

phpfalse
true

Lásd még

  • a __construct metódus,
    amely az osztály konstruktora
  • a __toString metódus,
    amely lehetővé teszi az objektum sztringként való megjelenítését