Metode __invoke

Die magiese metode __invoke laat 'n instansie van 'n klas toe om as 'n funksie aangeroep te word. Wanneer 'n objek as 'n funksie aangeroep word, roep PHP outomaties hierdie metode op. Die metode kan parameters aanvaar en 'n waarde teruggee, soos 'n gewone funksie.

Sintaksis

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

Voorbeeld

Kom ons skep 'n klas met 'n metode __invoke en roep die objek as 'n funksie aan:

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

Resultaat van die uitvoering van die kode:

php'Hello, John!'

Voorbeeld

Gebruik van __invoke met verskeie parameters:

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

Resultaat van die uitvoering van die kode:

php8

Voorbeeld

Kontroleer of 'n objek oproepbaar is deur is_callable te gebruik:

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

Resultaat van die uitvoering van die kode:

phpfalse
true

Sien ook

  • metode __construct,
    wat die konstruktor van die klas is
  • metode __toString,
    wat 'n objek toelaat om as 'n string voorgestel te word