7.14 Callback-Funktionen mit einem Zustandsgedächtnis programmieren
Problem
Sie benötigen eine Callback-Funktion. Eine einfache Funktion (z.B. ein Closure oder eine Lambda-Funktion) reicht aber für Ihre Zwecke nicht aus, da die Callback-Funktion einen eigenen Zustand halten – also ein Zustandsgedächtnis haben – soll.
Lösung
Seit PHP 5.3 haben Sie die Möglichkeit, von Funktionsobjekten Gebrauch zu machen. Dabei handelt es sich um Objekte, die wie Funktionen behandelt und demnach also auch wie Funktionen aufgerufen werden können:
class Funktor {
public function __invoke($wert) {
print $wert . "\n";
}
}
$f = new Funktor;
$f('Hallo Welt!');
Hallo Welt!
Diskussion
In „6.12 Dynamische Funktionen erzeugen“ haben Sie gesehen, wie Lambda-Funktionen verwendet ...
Get PHP 5 Kochbuch, Third Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.