Die __invoke-Methode

Die magische Methode __invoke erlaubt es einer Klasseninstanz, wie eine Funktion aufgerufen zu werden. Wenn ein Objekt wie eine Funktion aufgerufen wird, ruft PHP automatisch diese Methode auf. Die Methode kann Parameter entgegennehmen und einen Wert zurückgeben, wie eine normale Funktion.

Syntax

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

Beispiel

Erstellen wir eine Klasse mit der Methode __invoke und rufen das Objekt als Funktion auf:

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

Ergebnis der Codeausführung:

php'Hello, John!'

Beispiel

Verwendung von __invoke mit mehreren Parametern:

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

Ergebnis der Codeausführung:

php8

Beispiel

Prüfung, ob ein Objekt mit is_callable aufrufbar ist:

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

Ergebnis der Codeausführung:

phpfalse
true

Siehe auch

  • die Methode __construct,
    die der Konstruktor der Klasse ist
  • die Methode __toString,
    die es erlaubt, das Objekt als Zeichenkette darzustellen