__invoke-metodi

Taikamenetelmä __invoke mahdollistaa luokan ilmentymän kutsumisen funktiona. Kun oliota kutsutaan funktiona, PHP kutsuu automaattisesti tätä metodia. Metodi voi ottaa vastaan parametreja ja palauttaa arvon kuten tavallinen funktio.

Syntaksi

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

Esimerkki

Luodaan luokka metodilla __invoke ja kutsutaan oliota funktiona:

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

Koodin suorituksen tulos:

php'Hello, John!'

Esimerkki

__invoke:n käyttö useilla parametreilla:

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

Koodin suorituksen tulos:

php8

Esimerkki

Olion kutsumiskelpoisuuden tarkistus is_callable:n avulla:

php<?php
  class Test {}
  
  $obj1 = new Test();
  $obj2 = new class { public function __invoke() {} };
  
  var_dump(is_callable($obj1));
  var_dump(is_callable($obj2));
?>

Koodin suorituksen tulos:

phpfalse
true

Katso myös

  • metodi __construct,
    joka on luokan konstruktori
  • metodi __toString,
    joka mahdollistaa olion esittämisen merkkijonona