Door
Anorionil Black
op 15-03-2011 00:17
gewijzigd op 15-03-2011 00:19
1.451 views
Ik heb een probleem. Ik heb code die op een recursieve manier een include doet. Nu ben ik erachter gekomen dat dit niet werkt. Ik heb even wat testcode gemaakt:
echo("test: ".$test);
$test--;
if ($test>0)
include("test.php");
Als ik $test groter maak dan 1 dan doet hij het niet meer en heeft hij voor mij een "silent crash" bij de poging tot includen. test done wordt dan ook niet meer weergegeven, oftewel het script crasht zonder foutmelding.
Enig idee hoe ik dit toch kan doen?
De werkelijke code is onderdeel van een veel groter geheel, en de recursieve include is nu eenmaal de manier waarop die code het handigst uitgevoerd kan worden.
Uitleggen waarom ik precies de recursieve include wil is denk ik niet zo relevant.
include_once zal waarschijnlijk niet werken omdat daarmee wordt afgedwongen dat een bestand niet opnieuw kan worden geinclude?
include_once zal waarschijnlijk niet werken omdat daarmee wordt afgedwongen dat een bestand niet opnieuw kan worden geinclude?
Jep dat klopt. Meestal is dat wat je wil omdat je anders misschien functies opnieuw gaat definiëren, wat niet kan.
Over functies gesproken… heb je het daar al mee geprobeerd? Functies kun je zonder problemen recursief maken, en dat wordt ook wel als normaal beschouwd. Recursief includen, ik ben het nog nooit ergens tegengekomen waar het intentioneel, laat staan praktisch was. (maar misschien is dit een eerste keer, al ben ik sceptisch)
edit: jou voorbeeld werkt trouwens bij mij wel (PHP5.3, Mac OS X, zowel vanaf de cli als via mod_apache2)
[quote="Anorionil Black op 15/03/2011 00:26:51"]
include_once zal waarschijnlijk niet werken omdat daarmee wordt afgedwongen dat een bestand niet opnieuw kan worden geinclude?
Jep dat klopt. Meestal is dat wat je wil omdat je anders misschien functies opnieuw gaat definiëren, wat niet kan.
Over functies gesproken… heb je het daar al mee geprobeerd? Functies kun je zonder problemen recursief maken, en dat wordt ook wel als normaal beschouwd. Recursief includen, ik ben het nog nooit ergens tegengekomen waar het intentioneel, laat staan praktisch was. (maar misschien is dit een eerste keer, al ben ik sceptisch)
edit: jou voorbeeld werkt trouwens bij mij wel (PHP5.3, Mac OS X, zowel vanaf de cli als via mod_apache2)
test: 2 test: 1 test done.
[/quote]
Hmmm ik geloof dat ik php5.2 heb...
De code werkt ongeveer zo dat er een functie wordt aangeroepen die bepaalde files include, en die files roepen soms ook weer die functie aan...
In theorie zou ik de recursie in de ge-include files kunnen doen, maar praktisch gezien is dat niet mogelijk...