Par PHP templeitiem
Manuprāt, labākais vidusceļš starp divām galējībām - jaunu templeitu valodu un vienkāršu PHP koda inklūdēšanu ir apmēram sekojošs.
Pieņemsim, ka mums ir šāds imaginārs templeits, kurš izvada mainīgā $viens
vērtību un pēc tam cikliski izvada viendimensionāla masīva $array
vērtības kā sarakstu:
{$viens}
<ul>
{foreach($array as $v)}
<li>{$v}</li>
{end_foreach}
</ul>
It kā bezjēdzīgi, ne? To pašu var uzrakstīt iekš PHP un tas strādās daudz ātrāk. Taču, šajā gadījumā mums ir viena maza priekšrocība. Iespēja šo, kā sacīt jāsaka, templeitu nokompilēt uz PHP kodu, kā vien mums ir nepieciešams, lai gala lietotājam nebūtu jāraksta visuresošās pārbaudes.
Piem., ja mēs nezinām, vai mums $array
vispār ir izveidots, vai arī tas maz ir masīvs, mūsu vēl imaginārāka templeitu sistēma uzģenerē apmēram sekojošu PHP kodu, kuru tad ar vieglu sirdi pēcāk arī inklūdēt visur, kur nepieciešams:
<? if (isset($viens)) { echo $viens; } ?>
<ul>
<? if (isset($array) && is_array($array) && count($array) { ?>
<? foreach ($array as $v) { ?>
<li><?=$v?></li>
<? } ?>
<? } ?>
</ul>
Ja nu kāds gadījumā saprata, par ko es runāju un havo citu viedokli, laipni lūgtum komentāros (kā vienmēr:)
Apmēram šāda ideoloģija ir realizēta iekš PEAR::HTML_Template_Xipe
P.S. Starp citu, laikam jau varu izsniegt ķengāšanai. Mana temporārā implementācija.
sklp
2004. gada 3. februārī, plkst. 00:37
Vidusceļš starp divām galējībām - inklūdi un templeitu valodu būtu vēl viens php parseris?
misame
2004. gada 3. februārī, plkst. 08:42
Tā notice, kas tur beigās rādās (temporārās implementācijas lapā), viņai tā jābūt?
laacz
2004. gada 3. februārī, plkst. 08:43
misame: ugu. Lai nodemonstrētu, ka variablis nav iesetots.
Delf
2004. gada 3. februārī, plkst. 10:35
ideja skaidra. bet manuprat likt ciklus ieksh templeita ir garam, bet dazreiz iisti vietaa.
piemeram mums ir menu : home, about, login, my data
pedejos divus jaapasleepj attieciigi,- ielogies vai nee.
tas noziimee ka mums vel tas masiivs jauztaisa (foreach_1), un tad jaaiedzen iekshaa templeitaa (foreach_2).
un prasaas arii pec IFiem un etc. galu galaa, sanaks taac pats smagnejs objekc :)
/me paliek pie single var/const ieksh templeitiem