Php ile Smarty Motoruna Hızlı Giriş

Tarih: Temmuz 5th, 2009 | Yazar: Ertuğrul Erkan | Kategori: Php | Etiketler: , , , , , , , | 5 Yorum »

Pek çok gelişmiş proje OOP ve MVC modeli üzerine kuruludur. Yalnız karmaşık framework yerine tasarım ağırlığı olan motorları da kullanmak “bazı” durumlara göre oldukça performans verebilir. Önceki makalelerde sistemimizi yarı-nesnel hale getirmiştik. İşte onun da ötesinde olan sistem ise Smart Template Motoru.

Artık Php’ de tema düzeni tamamen bir teoriye dönüşmüş durumda. Çünkü çok fazla sayıda çözüm yolu var. Hepsinin de mantığı farklı bir yapıda. Smarty ve benzeri sınıflar ise performansı göz önünde tutarak bizlere ufacık veri değişimleri ile bütün temayı nasıl değiştiririz onu gösteriyorlar. Aslına bakarsanız Smarty küçük çaplı ve kişisel sistemlerde kesinlikle önerilmez. Çünkü devasa bir sınıf ve gereksiz yerlerde boşuna performans kaybı yaşatır. Fakat bir geliştirici grubunuz var ise işte sizin için en önemli sınıf Smarty ve türevleridir. Çünkü karışıklığı önler. Biz ana tasarımı html ve tpl uzantıları ile yaparız ve Smarty Php yardımı ile çevirisini gerçekleştirir.

Buradan Smarty i indirebilirsiniz. İçerisinde iki adet klasör var. demo da bildiğiniz gibi ufak bir demo hazırlanmış. Fakat isterseniz onlara mantığı kavradıktan sonra bakın. Çünkü bu sizin için daha iyi olacaktır.

libs isimli klasörün içerisindeki projenizin olduğu klasöre çıkartın. Örnek olarak localhost üzerine smarty klasörü açıp, libs içerisine de dosyaları ekleyebilirsiniz. Artık kurmuş oluyoruz. Bundan sonra ufak birkaç ayar ile sistemi harekete geçiceğiz.

Öncelikle bu dosyaların olduğu dizine iki adet klasör açalım. Birincisi tema, ikincisi ise cikti. Tema isimli klasörümüzün içerisine temamızı oluşturacak dosyalarımızı koyacağız. cikti isim klasörde ise Smarty’ nin kodlarımızı anlamlı hale getirip çalıştırdığı yer olacak. Yani şöyle;

Herkese Merhaba!!! Hoşgeldiniz; $isim

Şimdi burada $isim verisini önceden Smarty içerisine atadığımızı varsayalım. index.php çalıştırıldığı anda $isim Smarty tarafından düzeltilecek ve $smarty->isim haline getirilecek. Bu sayede anlamlı olacak. İşte bu çevirme gerçekleşince çıkan sonucu cikti isimli klasöre atacak. Denemelerimizden sonra klasör içerisine bakabilirsiniz…

Klasörlerden sonra index.php diye bir dosya yaratın ve içerisinde şu kodları ekleyin;

<?php
 $ilk = microtime();
 require_once "Smarty.Class.php";
 $smarty = new Smarty;
 $smarty->template_dir   = "./tema/";
 $smarty->compile_dir   = "./cikti/";
 $smarty->assign("site_adi",  "Bir Öğrenci Klasiği" );
 $smarty->assign("kategoriler",  array('Php', 'As3', 'İnternet'));
 $smarty->display('index.tpl');
 $son = microtime();
 echo $son-$ilk;
?>

mictotime() fonksiyonları sayesinde Smarty nin performansını görüyoruz.

Smarty sınıfımızı içeriye davet ediyoruz. Sonra sınıfımızı tanımlıyoruz ve tema ile cikti isimli klasörlerimizin yerlerini ayarlıyoruz. Bu sayede dosyaları bulacak ve işlem yapacaktır. Ardından index.tpl içerisinde kullanılacak olan verileri tek tek gördüğünüz gibi tanımlıyoruz. Bu veriler tekrar kullanılacak olduğundan anlamlı şekilde belirtilmeli. Smarty define fonksiyonu ile bu konuyu halletmiş…

Sonra display(); fonksiyonu sayesinde adres yazıldığı anda ilk gösterilecek dosya belirtiliyor. Yani anasayfayı gösteriyoruz. assign ve display komutları iyi anlamakta yarar var çünkü bunlar temeldir. Sadece bu iki komut sayesinde koskoca bir tema yaratabilirsiniz…

Evet, Smarty’ nin Php tarafında sadece bu kadar işimiz vardı. index.tpl dediğimiz olay tamamen metin tabalı kodların çevirilmesidir. Tpl yerine Html’ de kullanabilirsiniz…

O zaman index.tpl dosyamız nerede yer alacak? Tabi ki tema isimli klasörümüzün altında. Çünkü daha önceden orada aranması gerektiğini belirtmiştik. İşte şimdi tema isimli klasörümüzün altına index.tpl dosyasını yaratalım ve içerisine şu kodları koyalım;

<p>Hoşgeldiniz. Site Adı: {$site_adi}</p>
<ul>
{foreach from=$kategoriler item=kat}
<li>{$kat}</li>
{/foreach }
</ul>

Burada gördüğünüz gibi xml sistemine benzer şekilde komutlarımız yer alıyor. Daha önce belirttiğimiz verileri burada değişkenler şeklinde tekrar ediyoruz.

Şimdi localhost/smarty (kendi adresiniz neyse tabi) şeklinde denememizi yapalım; kodlarımızın çıktısını almış durumdayız. En altta da toplam süre. Sayfayı birkaç kez yenileyin; ben 0.009500 civarı bir sürede gerçekleştiriyoruz. İşte buna göre kendinize uygun performansı yakalayabilirsiniz.

Not: cikti isimli klasöre bakarsanız orada garip isimli bir Php dosyası görürsünüz. Bu index.tpl nin anlamlı halidir…

Unutmadan bu sayede MVC yani programlama mimarisine de uygun davranmış olduk. Yani geleceğin sistemlerine uyuyor. Bir kıyafet gibi geliştirilebilir hale geldi…

Smarty nin ikinci yazısında önbellek, eklentiler gibi konuları göreceğiz.

Herkese iyi günler, iyi çalışmalar…

Benzer Yazılar;


“Php ile Smarty Motoruna Hızlı Giriş” yazısında 5 Ahkam var.

  1. 1 jenny 00:01 on Ocak 8th, 2010 anında kesmiş:

    güzel bir uygulama olmş teşekkürler

  2. 2 ControL 14:31 on Ocak 12th, 2010 anında kesmiş:

    smarty daha önce kullanmadım düzenleme yaptığım oldu kullanan sistemlerde şuan versiyon 3 beta 6 var stable versiyonunumu beklemeliyim yoksa 2.x denmi başlamalıyım.
    birde smarty’i güncelleme şansımız varmı mesela 2.x den 3.x’e update gibi bir şey
    eski sistem {phphtml}; karışık koda göre hız farkı nedir?

  3. 3 Dergi 14:23 on Ocak 15th, 2010 anında kesmiş:

    Teşekkürler çok güzel bir paylaşım olmuş

  4. 4 Link Blog Topluluğu 14:24 on Ocak 15th, 2010 anında kesmiş:

    Teşekkürler yazılarınızı takip ediyorum.

  5. 5 Tunahan AKÇAY 09:52 on Nisan 23rd, 2010 anında kesmiş:

    Merhaba, bu güzel ve sade dilli anlatım için çok teşekkür ederim..


Ahkam Kesme Aparatı