Neben einigen Kriegsverbrechen wie der Etablierung der Goto-Funktion und der damit bedingten Erfindung des Spaghetti-Codes bin ich jetzt über temporäre Funktionen in PHP gestolpert.
Nicht das das was neues wäre - nur wird mir immer mehr klar, was für ein riesen Unfug dieses Feature ist. Laut PHP Manual werden temporäre Funktionen im Lambda-Stil für die Lösung von Problemen eingesetzt, wenn die Rahmen-Parameter erst zur Laufzeit feststehen. Ich entwickle jetzt schon seit über 10 Jahren - untergekommen ist mir dieser Fall bislang noch nicht.
Wesentlich wahrscheinlicher ist der Einsatz von temporären Funktionen bei benutzerdefinierten Sortieraufgaben - z.B. in Verbindung mit array_walk… Hier besticht klar die schicke Kurznotation:
$arr= array("der ","ein ","dieser ","jener ");
array_walk(
$arr,
create_function(
'&$v, $k',
'$v = $v."Zug";'
)
);
Was direkt ins Auge sticht: Es ist furchtbar unübersichtlich - wer seinen Code ein halbes Jahr später betrachtet hat erst nach 5 Minuten eine grobe Idee, was er damit wollte und weiß vielleicht nach einer halben Stunde Bescheid, was sein Code genau tut.
Stefan hat auf seinem Blog in einem Artikel zu create_function über ein Memoryleak berichtet, das temporäre Funktionen aufreisen. Ursache ist der Garbage-Collector, der mit dem von temporären Funktionen reservierten Speicherbereich nicht zurecht kommt.
Mein Fazit: Keine gute Idee. Man sollte immer schauen, das man seinen Code in ordentlich benannten und dokumentierten Funktionen abbildet. Besser schön objektorientiert mit einer Klasse.
Ähnliche Artikel:





