Ik ga dus nu voor mijn site een template engine knutselen, maar ik heb al bij de scripts gekeken, maar daar kan ik niet zo veel uit op maken hoe het nou precies werkt...
Wat is de beste manier om een GOEDE template engine te maken? (de reden dat ik niet smarty e.d. download, omdat ik 1: die niet snap 2: die niet werkt op mijn host(kweenie waarom) 3: ik wil niet zo iets uitgebreid, ik wil het gewoon zelf kunnen maken, niet dat ik alles download.. ik heb het veel liever zelf gemaakt.. + dat ik dan geen reclame op mijn site hoef te zetten...
ik gebruik wel echo's binnen die functie, en ik kan die er ook niet zo 1,2,3 eruit halen...(grote functie).. dus ik doe wel met ob_dinges:
<?php
ob_start();
require_once("parser.class.php"); // het script dus
require 'mijn_include.php';
require 'database.php'; //staat mijn functie
$cont = ob_get_clean();
$fun1 = ob_get_clean();
$parse = new parser("template.tpl"); // de template
$parse->assign("pname", "henk en annie zitten op de wc"); //naam van blok zonder [ of ] + inhoud
$parse->assign("content", $cont); // zie hierboven
$parse->assign("functie", $fun1);
$parse->output(); // de pagina outputten
?>
Dat werkt natuurlijk niet, want dat is het zelfde als dat ik er 2 keer $cont neer zet, maar: hoe moet het dan wel?
<?php
require_once("parser.class.php"); // het script dus
ob_start();
require 'mijn_include.php';
$cont = ob_get_clean();
require 'database.php'; //staat mijn functie
$fun1 = ob_get_clean();
$parse = new parser("template.tpl"); // de template
$parse->assign("pname", "henk en annie zitten op de wc"); //naam van blok zonder [ of ] + inhoud
$parse->assign("content", $cont); // zie hierboven
$parse->assign("functie", $fun1);
$parse->output(); // de pagina outputten
?>
Dit werkt denk ik wel, je moet zorgen dat de volgorde goed is.
euhm maar uit die database.php moet ik een functie gebruiken, dat is het enige wat het moet doen.
HOE roep ik dan alléén dié functie aan?
wat ik n doe is gewoon heel het script aanroepen, maar ik moet allleen die functie hebben!
Gewoon even een vraag die moet aanzetten tot meer zelfkennis: Niek, weet je eigenlijk wel wat je precies aan het doen bent? Ben je nu templates aan het gebruiken omdat je presentation-layer en logic-layer van elkaar wilt scheiden, of probeer je nu puur templates te gebruiken omdat het 'stoer' is? In dat eerste geval zal je heel wat moeten opofferen en nog aardig wat moeten herschrijven, dat hoort nu eenmaal bij vooruitgang :)
<?php
require_once("parser.class.php"); // het script dus
ob_start(); //nu eerst _weer_ ob_start want ob_get_clean verwijderd de oude, en dus moet er eerst weer een nieuwe buffer gemaakt worden.
require 'database.php'; //staat mijn functie
mijn_functie();
$fun1 = ob_get_clean();
$parse = new parser("template.tpl"); // de template
$parse->assign("pname", "henk en annie zitten op de wc"); //naam van blok zonder [ of ] + inhoud
$parse->assign("content", $cont); // zie hierboven
$parse->assign("functie", $fun1);
$parse->output(); // de pagina outputten
?>
is ook, ik doe het ook om het eerste geval ;-) en ja, ik vind mezelf natuurlijk ook heel stoer! :p
Nee ik wil het graag zien te leren, vooral omdat het makkelijker is, zo kan ik dus de phpfile aanpassen zonder de html te zien, en omgekeerd..
Bedankt alemaal! nu kan ik weer eent ijdje vooruit!