Metod __invoke

Magični metod __invoke omogućava instanci klase da bude pozvana kao funkcija. Kada se objekat poziva kao funkcija, PHP automatski poziva ovaj metod. Metod može da prima parametre i vraća vrednost, kao obična funkcija.

Sintaksa

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

Primer

Napravićemo klasu sa metodom __invoke i pozvaćemo objekat kao funkciju:

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

Rezultat izvršavanja koda:

php'Hello, John!'

Primer

Upotreba __invoke sa više parametara:

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

Rezultat izvršavanja koda:

php8

Primer

Provera da li je objekat pozivljiv pomoću 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));
?>

Rezultat izvršavanja koda:

phpfalse
true

Vidi takođe

  • metod __construct,
    koji je konstruktor klase
  • metod __toString,
    koji omogućava da objekat bude predstavljen u vidu stringa