Metóda __invoke

Magická metóda __invoke umožňuje inštancii triedy byť volaná ako funkcia. Keď je objekt volaný ako funkcia, PHP automaticky zavolá túto metódu. Metóda môže prijímať parametre a vracať hodnotu, ako obyčajná funkcia.

Syntax

phpclass MyClass {
  public function __invoke(...$args) {
    // implementácia
  }
}

Príklad

Vytvoríme triedu s metódou __invoke a zavoláme objekt ako funkciu:

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

Výsledok vykonania kódu:

php'Hello, John!'

Príklad

Použitie __invoke s viacerými parametrami:

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

Výsledok vykonania kódu:

php8

Príklad

Kontrola, či je objekt volateľný pomocou 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));
?>

Výsledok vykonania kódu:

phpfalse
true

Pozri tiež

  • metóda __construct,
    ktorá je konštruktorom triedy
  • metóda __toString,
    ktorá umožňuje objektu byť reprezentovaný ako reťazec