Jump to content
php.lv forumi

par .tpl un ko tas ēd?


lostz

Recommended Posts

Sveiki, radās man doma pamēģināt iemācīties veidot savu templating sistēmu, sāku google rakāties "how to make your own .tpl" bet protams, google ir kaptēne acīm redzamība un saprot to, ka es vēlētos priekš kāda cms to, bet šajā gadījumā nē,

un tapēc vēršos šeit, pie zinošākiem cilvēkiem ar jautājumu, kā izveidot parastu lapu ar template, ideja varētu būt tāda,

 

-template(mape kurā glabājas iekšā apakš mape ar template nosaukumu)

index ( te vienkārši un smuki visu parāda )

config ( definēts kādu template izmantojam no direktorijas (template)

 

ja ir iespējas, varētu parādīt man ar pirkstu virzienu kur to meklēt.

Paldies jau iepriekš.

Link to comment
Share on other sites

Atbilde ir vienkārša - just don't!

 

Kāpēc? Tāpēc, ka php jau ir templeitu valoda, vēl viens abstrakcijas slānis ir vienkārši lieks.

 

 

Tā vietā, labāk praktizē MVC izstrādes patternu, kur skati (jeb tie paši templeiti), ir parasti php faili, kuros ir maksimāli maz loģikas, kur notiek tīri mainīgo izvadīšana un cikli, kā piemēram:

 

<html>
<head>
 <title><?php echo $title;?></title>
</head>
</html>
<body>
<?php echo $content;?>
<ul>
<?php
foreach($list as $item){
 echo "<li>$item</li>";
}
?>
</ul>
</body>
</html>

Edited by briedis
Link to comment
Share on other sites

Nu visumā php jau nav templeitu valoda, bet nesen uzsāku sarunu par to vai vajag vai nevajag izmantot šablonus, mans viedoklis ka to nevajag.

 

Šeit ir tā diskusija: http://php.lv/f/topic/19199-kapec-izmantot-template-engines/page__p__149346

 

Ja tomēr izdomā taisīt savu šablonu sistēmu, tad vari apskatīties jebkuru jau gatavu, kaut vai to pašu smarty, apskaties vienkārši kā tur sataisīts, mācību nolūkiem gan jau derēs.

Link to comment
Share on other sites

Templeitu valoda ir valoda, kurā var raktīt templeitus, savukārt templeitu dzinējs ir dzinējs, kurš paņemot datus un templeitu apvieno tos output-ā.

Vai tiešām PHP var rakstīt tempeleitus, vai tiešām PHP var apvienot datus un templeitu vienā output-ā?

O, patiešām var!!!!

Tātad, PHP ir templeitu valoda un PHP ir templeitu dzinējs, punkts.

Link to comment
Share on other sites

C++ un JAVA tu vari raktīt tikai kodu, tāpēc tas nebūs tepleitu dzinējs, savukārt, teorētiski tu vari uzrakstīt dzinēju arī tā, lai varētu darīt:

 


hello, <?c++ cout<<name; ?>

 

 

un tad tavs uzrakstītais būs c++ template dzinējs.

Tā, kā PHP tā var darīt jau defaultā, tad defaultā PHP ir template dzinājs un attiecīgi template valoda.

Edited by codez
Link to comment
Share on other sites

ak dievs, vienkārši pajautāju cilvēkiem a tie te reali lieki posto un neko nepasaka,

Kā vienmēr milijons posti un tikai 1/2 jēdzīgi šajā gadījumā tikai briedim, pārējie rādija savu intelektu...

(mans rezultāts)

 

http://paste.php.lv/b250e46e8b101b531ffa24b6a07887c5?lang=html4strict

//

http://paste.php.lv/b7ea39a38d6fc01dec6256a3ebcb6f3f?lang=php

 

protams šis nav vis koda gabals, bet still lūk uz kuru pusi es skatījos, bet te tik kādam labāk ko "gudru" sākt dzīt.

 

ps. paldies briedi iemetu aci par mvc un hmvc, un tur blandoties pa rakstiem, atradu kā šo lācīti darbināt, lai izbēgtu lieku gudrinieku postus, es domāju varētu T.C. jo atbilde ir mācaties mvc

Link to comment
Share on other sites

Ja spēj izsekod dialogam, tad briedis bija vienīgais, kas diskutēja ar tevi, pārējie diskutēja savā starpā un viņiem pilnīgi pie kājas, ko tu domā.

Kas attiecas uz tavu mēģinājumu uztaisīt templeitu valodu, tas ir pilnīgi nevajadzīgs sviests.

Paņem to visu vienā klases metodē, extract-o datus, ieslēdz outputa saglabāšanu buferī, inklūdo templeitu, kurš rakstīts normālā valodā (PHP) un dzīvo laimīgs. Veidot kaut ko tikai, lai <?= $name?> aizvietotu ar {name} ir bezjēdzīgi.

 

Idejiski:

class Template  implements ArrayAccess{
function loadtemplate(){
 extract($this->_data);  
 ob_start();
 require $this->_tpl;
 $___c___ = ob_get_contents();
 ob_end_clean();
 return $___c___;
}
public function offsetSet($k, $v) {
 $this->_data[$k] = $v;
}
}

$tpl=new Template();
$tpl->_tpl='mans.tpl.php';
$tpl['name']='John';
$tpl['age']=35;

 

 

un templeits:

 

Hello, <?= $john; ?> (<?=$age;?>)

Edited by codez
Link to comment
Share on other sites

nu jā codez, tavs piemērs ir vieglāks, bet ja pieņemam, kad tā daļa ko rādiju ir daļa no taisīta, frameworka, un ja gribu viņu vēlāk uztaisīt, lai no malas cilvēkiem viņa būtu tīri viegli saprotama, gribi teikt nav jēgas man tā censties?

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...