Psttt:次世代phpテンプレートエンジン


Smartyは最もよく使われるテンプレートエンジンでしょう.似たようなエンジンも超多く、機能も大きく異なります.これらには最大の弱点があります.美工がHTMLページを作成した後、PHPプログラマーはSmartyコードをこのページに埋め込み、テンプレートファイルを作成しなければなりません.これにより、元のページの構造が破壊されます.美工が元のページを変更した場合、テンプレートファイルも変更しなければなりません.これは本当に憂鬱だ.
この問題を解決するために、画期的なPHPテンプレートエンジンが誕生しました:Psttt!
直接例を見てみましょう:美工が作ったHTMLページ、中のデータはすべてプレゼンテーションデータで、フィクションです.

 
   

   
     
< h1 id ='title' > Write our company name here </ h1 >
PHPコード:a.php

  
    
$view -> title = " foo company " ;

これはSmartyとあまり いません.
Pstttは でファイルを する があります.

  
    
h1#title = $title;

された コード:

  
    
< h1 id = " title " ><? php echo $this -> title; ?></ h1 >

amazing! が いですね. はhtmlページを に することができ、h 1とid=titleを すればよい.h 1#titleは、なんとCSSセレクタの をしています.
もっと な を てみましょう
が したHTMLページ:

  
    
< div id ='product_list' >
< div class ='product' >

< h2 > Mockup product 1 </ h2 >

< img src ='/images/default_product1.jpg' />

< p > Some product description goes here! </ p >

< span > Price: < strong > 99999 </ strong ></ span >

</ div >

< div class ='product' >

< h2 > Mockup product2 </ h2 >

< img src ='/images/default_product2.jpg' />

< p > Some product description goes here! </ p >

< span > Price: < strong > 888.99 </ strong ></ span >

</ div >
</ div >

phpコード:

  
    
$view -> products = array (
1 => array ( ' title ' => ' Product 1 ' , ' img ' => ' /img/products/1.jpg ' , ' description ' => ' the best product ever ' , ' price ' => ' $10 ' ) ,
2 => array ( ' title ' => ' Product 2 ' , ' img ' => ' /img/products/2.jpg ' , ' description ' => ' the second best product ever ' , ' price ' => ' $30 ' )
);

です.
Pstttコード:

  
    
//we just need one product to fill in data and iterate
#product_list>.product|deleteAllButFirst
//add iteration code, php foreach that will fill in data
#product_list>.product|before = <?php if ($this->products) foreach($this->products as $product ):?>
#product_list > .product> h2 = $product[title]
#product_list > .product > img|src = $product[img]
#product_list > .product > p = $product[description]

#product_list > .product > .span > strong = $product[price]
#product_list>.product|after = <?php endforeach;?>

された コード:

  
    
< div class = " user_box " >
Welcome
< strong class = " username " > Demo user 1 </ strong >
</ div >

< div id = " product_list " >
<? php if ( $this -> products) foreach ( $this -> products as $product ) :?>
< div class = " product " >

< h2 ><? php echo $product [title]; ?></ h2 >

< img src = " <?php echo $product [img];?> " />

< p ><? php echo $product [description]; ?></ p >

< span > Price : < strong ><? php echo $product [price]; ?></ strong ></ span >

</ div >
<? php endforeach ; ?>
</ div >

Smartyを するよりも、Pstttコードファイルを で する があります. のメリットは、 がページ を している 、 のページを に することができ、PHPプログラマーは もしなくてもいいということです. には でしょう.
については、 を してください.
http://codeassembly.com/Psttt!-full-documentation/
ソースコードはここでダウンロードできます.
http://github.com/givanz/psttt
http://www.zhaokunyao.com/archives/1236