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.