Php ile Smarty Motoruna Hızlı Giriş
Herkese tekrar merhaba. Bugün sizlere artık Php’ nin teorisel kısmına giriş olan Smarty tema motoru hakkında şöyle hızlı bir bilgi vermek istiyorum. Arkadaşlar daha öncesinde sizlere birçok kez tema düzeni hakkında dersler vermiştim. Hatta en sonunda verdiğim sistem diğer büyük scriptlerde kullanılıyor demiştim. Fakat o büyük scriptlerin ötesindekiler? İşte onlar Smarty gibi tema sınıfları kullanırlar…
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.
İsterseniz hemen konuya girelim. Öncelikle arkadaşlar buradan Smarty i bilgisayarlarına indirsinler. İç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. Bu sizin için daha iyi olacaktır çünkü.
Şimdi arkadaşlar libs isimli klasörün içerisindeki projenizin olduğu klasöre çıkartın. Ben localhost üzerine smarty diye bir klasör yarattım ve içerisinde libs içinde bulunan bütün dosyaları aktardım. Şimdi arkadaşlar Smarty nin bütün dosyaları elimize geçmiş durumda. Yani resmen kurduk. 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. Arkadaşlar 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 arkadaşlar şöyle;
Herkese Merhaba!!! Hoşgeldiniz; $isim
Şimdi arkadaşlar 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;
?>
Arkadaşlar burada mictotime() fonksiyonunu neden çalıştırdığımı merak edenler olacaktır. Smarty’ nin performansı nedir diye merak ettim. Bakalım ortalama olarak kaç mikro saniyede işlem yapıyor…
Neyse öncelikle 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. Arkadaşlar assign ve display komutları iyi anlamanızda yarar var çünkü bunlar temeldir. Sadece bu iki komut sayesinde koskoca bir tema yaratabilirsiniz…
Evettt Smarty’ nin Php tarafında sadece bu kadar işimiz vardı. Düzenlenme konusuna geçmeden şu tpl olayını anlatayım. Arkadaşlar index.tpl dediğimiz olay tamamen metin tabalı kodların çevirilmesidir. Tpl yerine Html’ de kullanabilirsiniz…
Neyse 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>
Evett işte bu kadar. 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 arkadaşlar localhost/smarty ( kendi adresiniz neyse tabi ) şeklinde denememizi yapalım ve hop; 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ştiriyorum. İşte buna göre kendinize uygun performansı yakalayabilirsiniz…
Not: Arkadaşlar şimdi 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…
Şimdilik bu kadar arkadaşlar. Smarty nin ikinci yazısında önbellek, eklentiler gibi konuları göreceğiz.
Herkese iyi günler, iyi çalışmalar…

08 Ocak 2010 - 00:01
güzel bir uygulama olmş teşekkürler
12 Ocak 2010 - 14:31
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?
15 Ocak 2010 - 14:23
Teşekkürler çok güzel bir paylaşım olmuş
15 Ocak 2010 - 14:24
Teşekkürler yazılarınızı takip ediyorum.