PHP 5.3: Lambda Funktionen
Anzeige Hier werben
Bisher ist es in PHP nur möglich anonyme Funktionen über die Funktion create_function() zu erstellen.
1
2
3
4
5
6 | <?php
$anonym = create_function('$a,$b', 'return $a*$b;');
$anonym(2, 5); // int(10)
?>
|
Hierbei wird die eigentliche Funktion erst beim Aufruf erstellt. Wird also $anonym(2, 5) mehrfach hintereinander aufgerufen, so wird die Funktion auch jedes mal neu erstellt. Darüber hinaus hat diese Variante den Nachteil, dass IDEs den Inhalt (2. Parameter) nur als String erkennen und somit den Inhalt nicht highlighten (nur als String).
Mit PHP 5.3 wird es Lambda Funktionen geben, die wie z.B. in Javascript direkt und nur einmal deklariert werden müssen. Die Syntax entspricht ebenfalls der in Javascript.
1
2
3
4
5
6
7
8 | <?php
$lambda = function($a, $b) {
return $a * $b;
};
$lambda(2, 5); // int(10)
?>
|
Bei der Deklaration einer Lambda Funktion sollte darauf geachtet werden, dass am Ende, im Gegensatz einer normalen Funktionsdeklaration, ein Semikolon steht.
Lambda Funktionen können genauso genutzt werden wie eine Funktion, die bisher mit create_function() erstellt wurde.



Funktionen in PHP
Finds ja immernoch eine Art hack, wie das in PHP gemacht ist. create_function() gibt einen String zurück, der später als Funktionsname verwendet werden kann. In wirklich dynamischen Sprachen sind Funktionen einfach auch Objekte, die man beliebig umherschieben kann. PHP hat sich da mit dem Dollar vor Variablennamen aber einen dicken Stein in den Weg gelegt.
Re: Funktionen in PHP
In PHP 5.3 sind Lambda Funktionen auch Objekte:
1 2 3 4 5[jan@jason ~]$ php -r 'var_dump(function(){});' object(Closure)#1 (1) { ["this"]=> NULL }Perfekt
habe mich gerade die letzten Tage gefragt wieso sowas nützliches noch nicht in PHP verfügbar ist.
Ach wie schön
Die Lambda Funktionen hab ich mit Scheme (ein Lisp Ableger) kennen gelernt. Eines der wenigen Dinge, die dort wirklich Spaß gemacht haben und vor allem eine Unmenge an Arbeit ersparen kann.