PHP Lambda und Closure – Begriffsklärung

Lambdas (also anonyme Funktionen) wurden in PHP mit Version 5.3 eingeführt und helfen dabei Funktionen, die nur an einer einzigen Stelle verwendet werden, vom globalen Scope fern zu halten. Ein Closure wiederum ist eine spezielle Art von Lambda. In diesem Beitrag erkläre ich euch wie beides definiert und verwendet wird.


Definition einer anonymen Funktion

Eine anonyme Funktion hat keinen Namen. Ansonsten gibt es keine Unterschiede zur „normalen“ Funktion.

Da wir sie so aber nicht aufrufen können, muss sie einer Variablen zugewiesen werden.

Wer sich dabei nach dem Sinn fragt, hat den richtigen Riecher: Das wirst du im echten Leben wohl kaum so machen.

Die wahre Bedeutung erschließt sich, wenn wir die anonyme Funktion direkt als Argument (meist dann als Callback verwendet) übergeben.


Was ist jetzt ein Closure in PHP?

Ein Lambda wird zum Closure, wenn es Zugang zu Variablen bekommt, die innerhalb der Funktion normalerweise nicht zur Verfügung stehen würden.

Stolperfalle beim Closure

Aber Achtung, das Closure hat keinen Einfluss auf die übergebene Variable, es wird nur der Wert beim Aufruf kopiert.

Wollen wir das wirklich, müssen wir die Variable als Referenz übergeben.


Können auch Parameter übergeben werden?

Klar! Lambdas sind auch nur Funktionen.


Fazit

Lambdas und in der Erweiterung Closures helfen uns dabei Funktionen, die ohnehin nur einmal verwendet werden sollen, direkt an Ort und Stelle zu definieren.