Jump to content
php.lv forumi

Kāpēc izmantot template engines?


Maris-S

Recommended Posts

Vai ir liela jēga izmantot šablonu sistēmas?

 

Iespējams es neesmu kaut ko sapratis, bet es redzu vairāk trūkumus nekā priekšrocības šablonu sistēmām.

 

Piemēram, ja apskatam "smarty", es nesaprotu ar ko šis:

 

<ul>
{for $foo=1 to 3}
   <li>{$foo}</li>
{/for}
</ul>

 

ir labāks par šo:

 

<ul>
<?php
for ($i = 1; $i < 4; $i++) {
	echo("<li>$i</li>");
}
?>
</ul>

 

Vienīgā priekšrocība ir tas ka kods ir mazliet īsāks, ko es nekad neesmu uzskatījis par priekšrocību.

 

Tomēr trūkumu ir vairāk kā vajag. Pats primitīvais ka nav "code highlight" jebkurā izstrādāšanas vidē. Tālāk jāmācās vēl šablonu valoda, ja iet runa par smarty, tad daudz maz ir ok, tā ir izplatīta, tai ir dokumentācija, to var salīdzinoši vienkārši iemācīties, bet ja iet runa par paštaisītu, kurai noteikti nav ne dokumentācijas ne pamācību, tad uzreiz sarežģījas lietas, kad kods ir jānodod citiem programmētājiem. Nākošais ir veiktspēja. Jau tā php ir salīdzinoši lēns, jo ir interpretators un tad ar šo interpretatoru tiek veidots vēl viens šablonu interpretators, ar savu sintaksi, saviem tagiem, kas visu kopējo padarīšanu vēl vairāk palēninās.

 

 

Viss tas tikai tāpēc, lai izņemtu <?php ?> no html koda un izveidotu savus, kas veido nepieciešamību pētīt kā kodā darbojas visādi ķeburi, kuriem nav pilnīgi nekā kopēja ne ar php, ne html. Kas ir slikts ja skatā parādās daži php tagi? To visu dara principa pēc, vai kā?

Link to comment
Share on other sites

  • Replies 43
  • Created
  • Last Reply

Top Posters In This Topic

Pie velna tos šablonu dzinējus. Kas vainas šai sintaksei?

 

<ul>
<? for ($i = 1; $i < 4; $i++): ?>
<li><?=$i;?></li>
<? endfor; ?>
</ul>

<? while(..): ?>
....
<? endwhile; ?>

<? if(..): ?>
....
<? endif; ?>

 

Laikam jau tāda,ka:

<? esot slikti,un short_open_tag var nākotnē kļūt deprecated,tāpēc nākas rakstīt jau <?php echo $var; ?> jo <?php $var; ?> neparādīs neko

un

dizaineriem,kam jāstrādā ar templeitiem,esot vieglāk uztvert {} vai %% nekā <?= ?> :D

Citi argumenti nenāk prātā,jo ar nekad neesmu sapratis,kādas priekšrocības dod kaut kāda monstroza templeitu sistēma kas jāstudē kā cita valoda lai viņu varētu vispār pielietot.

Edited by 404
Link to comment
Share on other sites

dizaineriem,kam jāstrādā ar templeitiem,esot vieglāk uztvert {} vai %% nekā <?= ?> :D

Citi argumenti nenāk prātā,jo ar nekad neesmu sapratis,kādas priekšrocības dod kaut kāda monstroza templeitu sistēma kas jāstudē kā cita valoda lai viņu varētu vispār pielietot.

Pilnīgas muļķības, ja kodu liek iekšā programmētājs, tad dizainerim visāpār ar to nav nekāda sakara.

Tur pretī ja dizaineris liek iekšā tos templetu simbolus etc. , tad vieglāk viņam iemācīt PHP pamatus.

Piedevām templetu sistēma noēd daļu no resursiem.

Kods vispār jastrukturē tā, lai pēc iespējas mazāk HTML daļa būtu PHP konstrukcijas - tikai tīras datu izvades un nekas vairāk ..

99% gadījumos nav nepieciešams HTML kodā daļa izmantot IF/FALSE vai vel trakāk ciklus.

 

Vienkārši jaizmanto MVC principus, nav jau jāpieturās pilnīgi pie viņiem, tomēr PHP daļu maksimāli būtu jādala no HTML

Link to comment
Share on other sites

Ir svarīgākā priekšrocība - var izmantot neinicializētus mainīgos. Savukārt mācīties vēl vienas valodas ciklus un kontroles struktūras nav pārāk labi. Lūk, nebūtu slikti izdarīt tā, lai visas kontroles struktūras būtu kodā, bet šabloni citur, bet vai kāda šablonu sistēma to atļauj?

Link to comment
Share on other sites

Pilnīgas muļķības, ja kodu liek iekšā programmētājs, tad dizainerim visāpār ar to nav nekāda sakara.

Tur pretī ja dizaineris liek iekšā tos templetu simbolus etc. , tad vieglāk viņam iemācīt PHP pamatus.

Nu par to tas bija vairak kā sarkasms,jo tādi argumenti ir dzirdēti,un,ja nemaldos,tad vai arī šeit tas netika savulaik diskutēts par to,kā pārklājas dizainera un kodera pienākumi līdz pat absurdam,kad abi "griež" vai mēģina kodēt.Bet ja par to nedefinēto variabļu izmantošanu,tad ir baigi kaitinoši pēc reportinga ieslēgšanas uz E_ALL,ieraudzīt lapu izraibinātu no noticēm. Arī "dārgos" komercskriptos. Kā arī potenciāli nākamajam koderim var rasties vēlme uzbraukt iepriekšējam,par viņa slinkumu :)

Link to comment
Share on other sites

1) '<?=' no PHP 5.4 jau ir automātiski ieslēgts, par 'deprecated' nav ne runas,

2) Pats esmu pret tādiem monstriem kā Smarty, kas, reāli, ir vēlviens, lieks, apstrakcijas slānis. Tieši tāpēc, atkārtošos, uzmetiet aci Mustache... atslēgvārds te būs "logic-less";

Link to comment
Share on other sites

it's over 9000, bet ja jau visi atkārtojas, tad es ar - php nevajag atsevišķas template engines, jo php scripta gabalu var iekļaut vienā failā ar html. Templates ir visu to valodu, kam nav tāda iespēja must-have kaut cik normālai web izstrādei. imho php template engines ir labs piemērs, ka php'isti dažreiz mēdz risināt problēmas, kuras viņiem nav un nebūtu jārisina.

Link to comment
Share on other sites

Paldies par atbildēm un diskusiju. Principā redzu ka neesmu vienīgais kas neuzskata šablonu sistēmas par priekšrocību. Paldies arī par saitēm uz stackoverflow diskusijām par šo tēmu.

 

Kā jau minēju viens no trūkumiem ir veiktspēja, šis pētījums to apliecina: http://www.phpcomparison.net.

 

 

Vēl dažas pārdomas par tēmu.

 

Pārsvarā visur par priekšrocībām tiek minēts loģikas atdalīšana no skata un tas, ka dizainerim būtu vieglāk strādāt pie dizaina izvietošanas htmlā, nemācoties php. Nevaru piekrist ne vienam, ne otram pamatojumam.

 

Nekāda loģikas atdalīšana no skata nenotiek vispār, mainās tikai loģikas pierakstīšanas sintakse, būtībā tiekam vaļā no loģikas pieraksta php sintaksē un izveidojam jaunu valodas sintaksi loģikas pierakstam. Nevar pierakstīt "ja - tad - citādi" izteiksmi bez loģikas, nav iespējams.

 

Dizainerim nav jādomā vispār par loģikas niansēm. Piemēram, dizainerim nav jāraksta tāds html kods, kādu to bieži norāda šablonu sistēmu piemēros:

 

<title>{$title}</title>

 

dizainerim ir jāraksta:

 

<title>Vieta nosaukuma</title>

 

vai vienalga ko jāliek "vieta nosaukumam" vietā, nav viņam jādomā par to ka tur būs mainīgais, nemainīgs tekst, vai vispār neko tur nerakstīs.

 

Dizainerim arī nevajadzētu domāt par cikliem, kas izvada <ul>, <ol> sarakstu elementus, vai izvada tabulu rindiņas, vienkārši jāizveido statisks htmls un loģika jāveido programmētājam.

 

Tādas ir manas domas un secinājums ir tāds, ka šablonu sistēma, vismaz uz doto brīdi, nav nepieciešama un nekādas priekšrocības nerada.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...