Meetod __invoke

Maagiline meetod __invoke võimaldab klassi eksemplaril kutsuda välja nagu funktsiooni. Kui objekti kutsutakse nagu funktsiooni, kutsub PHP automaatselt seda meetodit välja. Meetod võib võtta parameetreid ja tagastada väärtuse nagu tavaline funktsioon.

Süntaks

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

Näide

Loome klassi meetodiga __invoke ja kutsume objekti välja nagu funktsiooni:

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

Koodi täitmise tulemus:

php'Tere, John!'

Näide

__invoke kasutamine mitme parameetriga:

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

Koodi täitmise tulemus:

php8

Näide

Objekti kutsumisvõime kontrollimine kasutades 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));
?>

Koodi täitmise tulemus:

phpfalse
true

Vaata ka

  • meetod __construct,
    mis on klassi konstruktor
  • meetod __toString,
    mis võimaldab objekti esitada stringina