De __invoke-methode

De magische methode __invoke maakt het mogelijk dat een instantie van een klasse als een functie wordt aangeroepen. Wanneer een object als een functie wordt aangeroepen, roept PHP automatisch deze methode aan. De methode kan parameters accepteren en een waarde retourneren, net als een gewone functie.

Syntaxis

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

Voorbeeld

Laten we een klasse maken met de methode __invoke en het object als een functie aanroepen:

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

Resultaat van de code-uitvoering:

php'Hallo, John!'

Voorbeeld

Gebruik van __invoke met meerdere parameters:

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

Resultaat van de code-uitvoering:

php8

Voorbeeld

Controleren of een object aanroepbaar is met 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));
?>

Resultaat van de code-uitvoering:

phpfalse
true

Zie ook

  • methode __construct,
    die de constructor van de klasse is
  • methode __toString,
    die het mogelijk maakt dat een object als een string wordt weergegeven