PHP 5.3: Lambda Funktionen

von Jan Pieper | 0 | 4 Kommentare | 4677 Aufrufe

Anzeige Hier werben

Bisher ist es in PHP nur möglich anonyme Funktionen über die Funktion create_function() zu erstellen.

Definition einer funktion mit create_function()  
PHP
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.

Definition einer Lambda Funktion  
PHP
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.

Über den Autor: Jan Pieper
arbeitet bei der Adcloud GmbH als Software Engineer und beschäftigt sich seit über 10 Jahren mit der Entwicklung von dynamischen Webanwendungen.
Profilseite betrachten

Kommentare: PHP 5.3: Lambda Funktionen

Neuen Kommentar schreiben
Funktionen in PHP
Beantworten

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.

David Danier am 12.01.2009 um 23:15
Re: Funktionen in PHP
Beantworten

In PHP 5.3 sind Lambda Funktionen auch Objekte:

Lambda Funktionen sind Objekte  
Text
1
2
3
4
5
[jan@jason ~]$ php -r 'var_dump(function(){});'
object(Closure)#1 (1) {
  ["this"]=>
  NULL
}
Jan Pieper am 12.01.2009 um 23:53
Perfekt
Beantworten

habe mich gerade die letzten Tage gefragt wieso sowas nützliches noch nicht in PHP verfügbar ist.

Marco Kerwitz am 12.01.2009 um 22:25
Ach wie schön
Beantworten

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.

S Z am 12.01.2009 um 17:37