Metoda __invoke

Metoda magică __invoke permite unei instanțe de clasă să fie apelată ca o funcție. Când un obiect este apelat ca o funcție, PHP apelează automat această metodă. Metoda poate accepta parametri și poate returna o valoare, la fel ca o funcție obișnuită.

Sintaxă

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

Exemplu

Să creăm o clasă cu metoda __invoke și să apelăm obiectul ca funcție:

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

Rezultatul executării codului:

php'Hello, John!'

Exemplu

Utilizarea __invoke cu mai mulți parametri:

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

Rezultatul executării codului:

php8

Exemplu

Verificarea dacă un obiect este apelabil folosind 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));
?>

Rezultatul executării codului:

phpfalse
true

Vezi și

  • metoda __construct,
    care este constructorul clasei
  • metoda __toString,
    care permite ca un obiect să fie reprezentat sub formă de șir de caractere