Metodas __invoke

Magiškas metodas __invoke leidžia klasės egzemplioriui būti iškviestam kaip funkcijai. Kai objektas iškviečiamas kaip funkcija, PHP automatiškai iškviečia šį metodą. Metodas gali priimti parametrus ir grąžinti reikšmę, kaip įprasta funkcija.

Sintaksė

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

Pavyzdys

Sukurkime klasę su metodu __invoke ir iškviškime objektą kaip funkciją:

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

Kodo vykdymo rezultatas:

php'Hello, John!'

Pavyzdys

__invoke naudojimas su keliais parametrais:

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

Kodo vykdymo rezultatas:

php8

Pavyzdys

Patikrinimas, ar objektas yra iškviečiamas naudojant 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));
?>

Kodo vykdymo rezultatas:

phpfalse
true

Taip pat žiūrėkite

  • metodas __construct,
    kuri yra klasės konstruktorius
  • metodas __toString,
    kuri leidžia objektui būti pateiktam kaip eilutė