Jeg har kodet en del før jeg begynte på informatikk, men før stuiene var mønster (patterns) et ukjent begrep for meg. Siden PHP i lang tid var det foretrukne språket ble det gjerne gjort nyvinninger nettopp i dette språket (IRC-bot kan nevnes).
For en tid tilbake nevnte jeg en av mine “gode” idéer fra den gang for noen med-studenter, og øyeblikkelig kom navnet “destruction-driven development” opp. Konseptet er i og for seg ikke noe jeg har sett igjen i løpet av årene på Gløshaugen, samt at gjennomføringen er bundet mot utvikling på nett, fortrinnsvis i skripingspråk.
Av og til er det greit å hente inn noen standard-filer som blir til over tid (av litt for mange asiater på Aardvark kalt “custom framework”) for å lage til en demo, simpel to-siders løsning eller lignende, og i den forbindelse fant jeg at jeg ofte glemte å kjøre metoden som skulle vise resultatet til en bruker (mye “feilretting”). Med dette knyttet opp mot Smarty endte jeg opp med å ønske å lage sider slik:
<?php
require_once("autoload.php");
Template::setTemplate("page.tpl");
$t = Template::getInstance();
$t->assign("title", "Forside");
$t->assign("text", "Lorem ipsum...");
?>
Konseptet er å la presentasjon foregår på et punkt hvor man er sikker på at all logikk er kjørt, og hvilket bedre punkt enn ved kjøring av Garbage Collector (GC) finnes? Ved å la destruction-metoden til template-objektet, som er en subklasse av Smarty, til å kjøre display()-metoden trenger ikke kodesnutten over å gjøre det, samt at jeg slipper å duplisere kode for å vise vise innhold. Se gjerne det vedlagte eksempelprosjekt som benytter Smarty.
Jeg ser i utgangspunktet to problemer med overstående kode, hvilket er grunnen til at jeg ikke vil bruke dette konseptet i prosjekter:
- Det vil gjøre prosjektet vanskeligere å feilrette.
- Implementasjonen av GC kan endre seg, og ved å oppdatere PHP kan man oppleve at alle sider er blanke. (Les: flere ting som potensielt kan gå galt)
