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 O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.