PHP5: Functies in functies (vies!)

March 25th, 2007 by Davy

Om 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 ;)

function_foo.png

Geeft als output:

function_foo_output.png

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 ;)

5 Responses to “PHP5: Functies in functies (vies!)”

  1. Frank says:

    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.

  2. Lode says:

    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

  3. Davy says:

    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 :)

  4. Davy says:

    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 ^^

  5. Lode says:

    Ik gaf opzettelijk dat voorbeeld en de link naar de volledige uitleg ;)

Leave a Reply