Beste lezers. Hieronder heb ik een functie waarmee ik modules in mijn systeem laad. De functie leest simpelweg een php-bestand en zet de output d.m.v. een buffer in een variabele. Die variabele word gescand door het systeem waarna er een header en footer aan vastgeplakt word.
<?php
function file_to_var($file)
{
global $db;
if (is_file($file))
{
ob_start();
include($file);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
}
?>
Het bovenstaande werkt helemaal perfect voor mijn systeem. Maar nu: Wanneer ik een module toevoeg met een eigen ob_start() ouputbuffer (zoals bijvoorbeeld de JUploadclass) dan word er vroegtijdig output geproduceerd. Waardoor de output bovenaan de website komt te staan. Situatie:
<?php
function file_to_var($file)
{
global $db;
if (is_file($file))
{
ob_start();
include($file);
//De volgende ob_start() demonstreerd een module met
//een eigen buffer waardoor het systeem vroegtijdig output genereert
ob_start();
$content = ob_get_contents();
ob_end_clean();
return $content;
}
}
?>
Stel a.u.b. geen vragen waarom ik output buffering gebruik om mijn systeem te laten werken. Dit heb ik o.a. gedaan zodat ik bijvoorbeeld zelfgemaakte tags te koppelen aan modules waardoor mensen met geringe ervaring in html al in staat zijn om een eigen layout te maken en modules een plek te geven op de website.
1.907 views