Методот __invoke

Магичниот метод __invoke овозможува инстанца од класата да се повика како функција. Кога објектот се повикува како функција, PHP автоматски го повикува овој метод. Методот може да прифаќа параметри и да враќа вредност, како обична функција.

Синтакса

phpclass MyClass {
  public function __invoke(...$args) {
    // имплементација
  }
}

Пример

Да креираме класа со метод __invoke и да го повикаме објектот како функција:

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

Резултат од извршувањето на кодот:

php'Hello, John!'

Пример

Употреба на __invoke со повеќе параметри:

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

Резултат од извршувањето на кодот:

php8

Пример

Проверка дали објектот може да се повика со 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));
?>

Резултат од извршувањето на кодот:

phpfalse
true

Погледнете исто така

  • методот __construct,
    кој е конструктор на класата
  • методот __toString,
    кој овозможува објектот да биде претставен како стринг