Moin!
"This is how PHP expresses a closure. This is not evil at all and in fact it is quite powerful and useful.
Es kommt mir so vor, als würde hier auf ungeheuer komplizierte Art und Weise ein Designfehler von PHP ausgebügelt, nämlich dass es keine privaten Funktionen (also in Funktionen gekapselte Unterfunktionen) gibt. Die fehlen mir oft!
Oder täusche ich mich da?
Mir fehlen die nicht. Ich benutze Objekte, die haben das Feature von privaten Funktionen.
Wenn dir das nicht zusagt, kannst du alternativ auch Klassen mit statischen (public und private) Funktionen benutzen und denselben Effekt haben.
Funktionen, die nicht in einer Klasse definiert sind, sind nun mal in einem globalen Scope definiert - da kann es nur eine geben, Mehrfachdefinition ist nicht erlaubt, ebenso ist das Definieren von Funktionen innerhalb von Funktionen zwar möglich, aber nur einmal.
Das wird in PHP auch nie so geändert werden. Andernfalls würde niemand auf die neue Version updaten, wenn dadurch alter Code unbrauchbar wird.
Python hat das als schlechtes Beispiel vorgemacht: Die coolen Features sind in Version 3.x drin, die schlechte Welt ist in Version 2.x. Dummerweise sind die coolen Features inkompatibel zu 2.x-Code - wer Code schreiben will, der unter 2.x und 3.x läuft, kriegt weder die coolen Features, noch kann er die alten wichtigen Features benutzen.
- Sven Rautenberg