Selco Cod
Selco Cod

Yazılım ve güvenlik üzerine makaleler yazan günümüz teknolojisini yakından takip eden sıradan birisi...

Twitter


PHP RainTPL Template Engine Kullanımı

PHP ile proje yazanlara çok lazım olabilecek tema moturu RainTPL üstünde duracağım. Bu tema engine sistemleri HTML ile PHP kodlarını ayırmaya yaramaktadır. Bunun sayesinde oluşturulan projelerde temayı yapıcak Front-End Developer kişiler için basit ve kolay bir şekilde tema yazdırılabilir. Bunun sonucunda PHP kodlarındaki güvenlikde korunmuş olur. Tabi ki böyle bir şeye gerek var ise yapmak daha iyidir çünkü büyük projelerde ister istemez ufak bir performans kaybıda oluşacaktır. Bunun üzerine ben performans ile ilgili de bilgi vereceğim.

Neden RainTPL Tercih Edilmeli?

Piyasada bir çok şablon moturu bulunmaktadır. Bunlardan en bilineni smarty dir. Fakat ben onun tanıtımını yapmayacağım çünkü smarty her kütüphaneye desteklemek için yığın kod bünyesinde barınmaktadır. Bir ufak sayfa için bile tüm kodlarını çalıştırdığı için arkaplanda performans kaybı yaşatmaktadır. Bunun için performans testlerini de yayınlıyorum. PHP ile test yapılan şablon motorları; Smarty, Dwoo, RainTPL, Savant, Twig Execution Time and Memory (assign) Total average (assign) Sonuçlara baktığımızda Smarty performans bakımından en düşük seviyede. RainTPL ise salt php den sonra en iyi performans veren en iyi şablon motoru. Şimdi RainTPL kullanmaya ikna olduğumuza göre nasıl kullanacağımızı görelim.

RainTPL Kullanımı Nasıldır?

İlk olarak bu adresten RainTPL en son sürümünü indiriyoruz. İndirdiğiniz dosyalar içinde kullanım örnekleri mevcuttur. Ayrıca RainTPL döküman sayfasında da kullanımına ait bilgiler mevcuttur. Ancak ben şimdi size RainTPL kullanımına ilişkin detayları burda da paylaşacağım. PHP Developer: Assign Oluşturduğumuz herhangi bir değişkeni HTML dosyamıza göndermek için sınıftaki assign methodunu kullanıyoruz.
<?php
$degisken = 'Merhaba Dünya...';
$tpl->assign( 'deger', $degisken);
?>
PHP Developer: Draw Assign ile gönderilen değer değişkenlerinin hangi dosyada çalışacağını belirlediğimiz methodtur. Method kullanımında uzantı belirtilmez default olarak .html uzantısıdır fakat configure methodu ile istediğimiz uzantı yapabiliyoruz. Onuda birazdan göstereceğim.
<?php
$tpl->draw( 'index' );
?>
PHP Developer: Cache Bu method ile dosyaları belirli bir süre boyunca HTML Cache yapabiliriz. Tek dezavantajı belirli bir değeri değil dosyayı cache yapmasıdır fakat onuda Cache ID belirleyip yeni değer olduğu zaman o Cache ID deki dosyayı silip tekrar aktif cache yaptırabiliriz.
<?php
if( $cache = $tpl->cache( 'index', $expire_time = 300, $cache_id=null ) )
{
    echo $cache;
} else {
    $tpl->draw( 'index' );
}
?>
Cache dosyaları silmek içinde array_map fonksiyonunu kullanabiliriz.
<?php
array_map( "unlink", glob( raintpl::$cache_dir . "*.rtpl.php" ) );
?>
PHP Developer: Configure Bu method ile şablon motorundaki temel değerleri belirlemeye yaramaktadır. tpl_dir Bu değer şablon dosyalarının bulunduğu klasoru belirtmektedir.
<?php
raintpl::configure( 'tpl_dir', 'templates/' );
?>
cache_dir Cache dosyalarının kaydedileceği klasoru belirlemektedir. Cache yapılacak ise eğer bu klasorde yazma izni olmalıdır.
<?php
raintpl::configure( 'cache_dir', 'cache/' );
?>
base_url Bu değer ile projenin başlangıç yerini belirleyebilirsiniz. Oluşturulan dosyalar bu url ye eklenir.
<?php
raintpl::configure( 'base_url', 'http://selcuk.in/');
?>
tpl_ext Bu değer ile tema dosyalarının alacağı uzantıyı belirleyebilirsiniz.
<?php
raintpl::configure('tpl_ext', 'html');
?>
HTML Developer: {$variable} Assign method lie html dosyasına gönderilen değeri yazdırmak için kullanılan dinamik içerik değişkendir.

<!-- $tpl->assign('isim', 'Selçuk'); diye bir değer belirlemiş olalım --> 
Benim adım {$isim}
<!-- Çıktı: Benim adım Selçuk --> 
Ayrıca bu method ile +, -, *, /, %, . operatörlerini ve html içinde fonksiyonları da kullanabiliyoruz. Örnek için döküman sayfasına bakabilirsiniz. HTML Developer: {#constant#} Bu değişken ile php dosyalarımızda belirlediğimiz yada var olan sabit değerleri html dosyamızda ekranda göstermemize yaramaktadır.
<!-- define('selco', 'Selçuk Çelik'); diye oluşturduğumuz sabit değeri assign methodu kullanmadan html dosyamızda gösterebiliriz. --> 
Ben {#selco#}
<!-- Çıktı: Ben Selçuk Çelik --> 
HTML Developer: {if="condition"}{/if} HTML dosyamız içinde if koşulunu kullanmamıza yaramaktadır. Projelerimizde bize en gerekli olacak şeylerden biri de koşullardır.
<!-- $tpl->assign('isim', 'Selçuk Çelik'); diye bir değer belirlemiş olalım --> 
{if="$isim == 'Selçuk'} Ben Selçuk {else} Ben Selçuk Çelik {/if}
<!-- Çıktı: Ben Selçuk Çelik --> 
HTML Developer: {loop="array"}{/loop} Bu tag ile assign edilmiş dizileri okuyabiliriz.
<!-- $dizi = array('isim' => 'Selçuk', 'yas' => '23'); diye bir dizi olusturup assign ile değerini dizi yapalım. --> 
{loop="dizi"}
Benim adım {$value.isim} ve yaşım da {$value.yas}</br>
<!-- Çıktı: Benim adım Selçuk yaşım da 23 --> 
{/loop}
HTML Developer: {noparse}{/noparse} Bu taglar arasına yazılan hiç bir değer kaideye alınmaz ve olduğu gibi şablon dosyasında ekrana yansıtılır.
<!-- $tpl->assign('isim', 'Selçuk Çelik'); diye bir değer belirlemiş olalım --> 
{noparse}Ben {$isim} {/noparse}
<!-- Çıktı: Ben {$isim} -->
HTML Developer: {* comment *} Bu degisken de yorumlama kısmıdır. PHP deki gibi //, /* */, # eş değerdir. O kısımlar arasına yazılan değerler kullanıcıya yansıtılmaz.
{* Merhaba *}  Nasılsın?
<!-- Çıktı: Nasılsın? -->
HTML Developer: {include="template"} Bu method ile html dosyamıza bir başka html tema dosyasını entegre edebiliriz. Ve ayrıca php den gönderilen değişkeni de entegre edebiliriz.
{include="page"}
{include="$page"}



Yazı Hakkında Yorumlar