PHP5: Functies in functies (vies!)
March 25th, 2007 by DavyOm de één of andere reden is zondag de leukste dag om te programmeren in PHP. Dit is nu de 3de week op rij dat ik iets “nieuw” ontdek op een zondag in PHP. Deze week het feit dat je functies in functies in functies kan definiëren EN gebruiken. Hieronder een vies voorbeeldje
Geeft als output:
Ps: Graag wil ik ook even vermelden dat je bvb niet de functie “foo” kan definiëren in een reeds bestaande functie foo. Ook best wel vies


March 26th, 2007 at 07:49
Jikes, da’s ronduit vies! Ik wist niet dat het kon, maar t ziet er niet uit. Ik zei het eerder al: Het OO model van php is zo fucked up.
March 26th, 2007 at 12:50
En het wordt nog erger vrees ik.
Alle functies en klasses hebben in PHP een globale scope. Met andere woorden, ook al is de functie binnen een andere functie gedefinieerd. Je kunt de geneste functie ook oproepen buiten de omvattende functie.
M.a.w. de oproep van de bar()-functie kan ook gerust na het foo(); statement komen te staan
Gedocumenteerd gedrag trouwens:
http://www.php.net/manual/en/language.functions.php
March 28th, 2007 at 10:07
Niet volledig waar
< ?php
function foo()
{
function bar()
{
echo 'ik ben dé bar';
}
}
bar();
?>
Dit resulteert in een fatal error omdat hij de functie “bar” niet kent
March 28th, 2007 at 10:09
Als je uiteraard foo(); voor bar(); zet dan werkt het wel, maar als je enkel bar(); gebruikt niet wat “logisch” is volgens de leuke php oh-oh manier ^^
March 29th, 2007 at 19:32
Ik gaf opzettelijk dat voorbeeld en de link naar de volledige uitleg