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:

Bestand A:
$test = 2;
include("test.php");
echo("test done.");



test.php
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?
1. Je logica valide maken (waarom wil je een recursieve include?!)
of 2. include_once gebruiken.
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?
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.
Jelmer rrrr op 15/03/2011 00:30:02

[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...

Reageren