Metoda __invoke

Magična metoda __invoke omogoča, da primerek razreda kličemo kot funkcijo. Ko je objekt poklican kot funkcija, PHP samodejno pokliče to metodo. Metoda lahko sprejme parametre in vrne vrednost, kot običajna funkcija.

Sintaksa

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

Primer

Ustvarimo razred z metodo __invoke in pokličimo objekt kot funkcijo:

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

Rezultat izvajanja kode:

php'Hello, John!'

Primer

Uporaba __invoke z več parametri:

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

Rezultat izvajanja kode:

php8

Primer

Preverjanje, ali je objekt klicen s pomočjo 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 izvajanja kode:

phpfalse
true

Glejte tudi

  • metoda __construct,
    ki je konstruktor razreda
  • metoda __toString,
    ki omogoča, da je objekt predstavljen kot niz