Smarty

Smarty er en såkaldt template engine, som kører i PHP.

Smarty er i princippet bare et PHP script, som udfører en opgave, men det er blevet så udbredt at nogle kalder det et direkte framework. Der er der dog også en god grund til, da udviklerne har opsat Smartys filsystem og indstillinger, som var det et faktisk modul til PHP.

Hvad Smarty egentlig gør, er at det tager et PHP script, udfører det, og derefter sender forskellige genererede variabler til et template (skabelon), hvor Smarty derefter udfører forskellige opgaver med variablerne, for til slut at kompilere skabelonen til en webside som bliver vist.

Filendelse

Smarty benytter sig normalt af endelsen .tpl, dog skulle alle andre endelser fungere også. Grunden til at .tpl er mest brugt, er at det står for template. Med endelsen .tpl, er det også nemmere at finde ud af, hvad der er skabeloner og hvad der er PHP-filer.

Afgrænsning af koden

I Smarty-skabeloner, bruger man normalt { og } til at afgrænse kode. For eksempel, vil {$variabel} udskrive en variabel, der hvor koden er. Variablen skal dog være sendt fra PHP scriptet først.

Man kan bruge sine egne såkaldte delimiters, ved at bruge en kode i stil af denne:

<?php

// Åbn Smarty-modulet.
require('smarty/libs/Smarty.class.php');

// Åbn Smartys class.
$style = new Smarty();

// Indstil delimiters.
$style->left_delimiter = "<smarty-";
$style->right_delimiter = "-smarty>";

?>

Med ovenstående kode, kan du nu udskrive en variabel med <smarty-$variabel-smarty>, i stedet for at bruge { og }, hvilke tit kolliderer med JavaScript. Man skal passe på med, hvilke delimiters man bruger. Hvis du, for eksempel, bruger <? og ?>, vil det muligvis kollidere med PHPs egne tags.

Eksempler på Smarty-kode

Hej verden

Den klassiske Hej verden, i Smarty:

test.php:

<?php

// Åbn Smarty-modulet.
require('smarty/libs/Smarty.class.php');

// Åbn Smartys class.
$style = new Smarty();

// Send nogle variabler til Smarty.
$style->assign('hello','Hej');
$style->assign('world','verden!');

// Vis siden.
$style->display('test.tpl');

?>

test.tpl:

<html>
<head>
<title>Smarty test-side</title>
</head>
<body>
<p>
{$hello} {$world}
</p>
</body>
</html>

Resultat

Hvis man laver de to filer, test.php og test.tpl, og sætter den ovenstående kode ind i dem, og åbner test.php i et browservindue, vil det udskrive noget i stil af:

Hej verden!

Og sidekoden vil være:

<html>
<head>
<title>Smarty test-side</title>
</head>
<body>
<p>
Hej verden!
</p>
</body>
</html>

Jeg hedder Hans

Denne er taget fra PHP-artiklens Jeg hedder Hans.

test2.php:

<?php

// Åbn Smarty-modulet.
require('smarty/libs/Smarty.class.php');

// Åbn Smartys class.
$style = new Smarty();

// Definer variabler.
$navn = "Hans";
$alder = "32";

// Send variabler til Smarty.
$style->assign('navn',$navn);
$style->assign('alder,$alder);

// Vis siden.
$style->display('test2.tpl');

?>

test2.tpl:

<html>
<head>
<title>Smarty test-side 2</title>
</head>
<body>
<p>
Mit navn er {$navn}.
</p>
<p>
Jeg er {$alder} år gammel.
</p>
</body>
</html>

Resultat

Hvis man laver de to filer, test2.php og test2.tpl, og sætter den ovenstående kode ind i dem, og åbner test2.php i et browservindue, vil det udskrive noget i stil af:

Mit navn er Hans.
Jeg er 32 år gammel.

Og sidekoden vil være:

<html>
<head>
<title>Smarty test-side</title>
</head>
<body>
<p>
Mit navn er Hans.
</p>
<p>
Jeg er 32 år gammel.
</p>
</body>
</html>

Eksterne henvisninger

Den officielle Smarty hjemmeside

Webudviklingssoftware
Programmeringssprog