Zoals hier staat misschien?
Note that a function that calls a variable by reference CANNOT be used recursively, it will generate a CGI error (at least on my windows platform).
Thus:
Will NOT work.
Instead, you should just use global variables.
<?php
$foo = 0;
function bar(){
global $foo;
$foo++;
echo $foo."\n";
if($foo < 10)
bar($foo);
}
?>
This, of course, assuming that you need to use $foo in other functions or parts of code. Otherwise you can simply pass the variable regulary and there should be no problems.
Door eerst alle PHP logica uit te voeren en dan pas de HTML naar de browser te sturen. Dus met andere woorden, door je theme_header() op een andere plaats in je script aan te roepen...
?
Onbekende gebruiker
30-10-2010 17:32
Template engine maken.
Eerst voor je alle logica uit. Dus data uit de db trekken e.d.
Dan pas stop je het in een pagina.
Waarom gebruik je output buffering als ik vragen mag. Ik hoop niet dat je dat doet om 'headers already sent' foutmeldingen te voorkomen?
Als je dat wel doet, ben je niet juist bezig. Die foutmeldingen worden namelijk veroorzaakt doordat de volgorde in je script niet klopt. Je output dan waarschijnlijk al HTML terwijl er nog PHP logica uitgevoerd moet worden waarin een header gewijzigd wordt. Kortom, zorg dat je scripts goed in elkaar zitten: eerst alle PHP logica en dan pas output genereren.
De header fouten hebben niets met smarty te maken, maar puur met de fout dat jij output verstuurt voordat je een functie als header() of session_start() aanroept. Het gebruik van smarty lost deze fouten echt niet zomaar op.
Uiteraard is het gebruik van een template engine wel een aanrader om je output te verzorgen. Het geeft je een grotere mate van flexibiliteit.
Hoezo kan je niet anders? In plaats van de output naar de browser te sturen kun je deze altijd tijdelijk in een variabele opslaan en de inhoud van deze variabele pas aan het eind van het script naar de browser sturen...