Flashcentury
Twitter
Facebook
Linkedin
Rss
friendfeed
Smarty ‘de Fonksiyon oluşturmak (register_function)

Smarty ‘de Fonksiyon oluşturmak (register_function)

Yazar Hüseyin Kocak

Kategoriler: Smarty

Bir önceki Smarty makalemde block oluşturmayı anlatmıştım, şimdi ise fonksiyon oluşturmayı anlatarak konuya devam etmek istiyorum. Smarty ‘de kendinize özel fonsiyonlar oluşturarak template dosyalarınızın (diğer bir değişle HTML dosyalarınızın) içinde bu fonksiyonları kullanabilirsiniz.

İsterseniz Smarty ‘de block oluşturmak isimli makalede kullandığım örnek ile devam edelim;

Hatırlarsanız değişken içerisindeki karakterleri küçük harfe çeviren bir fonksiyon yazmıştık

function kucukKarakter ($degisken){
$degisken = strtolower($degisken);
return $degisken;
}

Yukarıdaki PHP fonksiyonunu Smarty için optimize edelim;

$smarty->register_function('karakter', 'kucukKarakter');

function kucukKarakter ($params, &$smarty){
$degisken = $params['yazi'];
$degisken = strtolower($degisken);
return $degisken;
}

Smarty için fonksiyonumuzu kullanıma hazır. Sanırım $params değişkeni dikkatinizi çekmiş olmalı, yukarıdaki örneğin HTML (.tpl) dosyamız içerisinde kullanımını açıkladığımda $params değişkeninin ne işe yaradığını anlayacaksınız;

Bu bir Smarty fonksiyonudur<br />
{karakter yazi="FlashCentury.Net"}

Yukarıda parantez ({  }) içerisine karakter yazarak fonksiyonumuzu çağırdık ve yazi isimli bir değişken tanımlayarak içeriğini  FlashCentury.Net olarak belirledik. Burada tanımladığımız yazi değişkeni Smarty fonksiyonu içerisinde $params değişkenine ait bir dizi (array) nesnesi gibi işlem görüyor.

Şimdi örneğimizi biraz daha geliştirerek hem fonsiyonu hemde $params değişkenini biraz daha anlayalım;

$smarty->register_function('karakter', 'karakter');

function karakter ($params, &$smarty){
$degisken = $params['yazi'];
$durum = $params['durum'];
	switch ($durum) {
	case 1:
	return ucfirst($degisken);
	break;
	case 2:
	return ucwords($degisken);
	break;
	case 3:
	return strtolower($degisken);
	break;
	case 4:
	return strtoupper($degisken);
	break;
	default:
	return $degisken;
	}
}

Burada fonksiyonumuzu biraz daha geliştirerek switch aracılığı ile 4 olasılık verdik.

Olasılıklar;

  1. ucfirst Değişkenin ilk harfini büyük yapar.
  2. ucwords Değişken içerisinde tüm kelimelerin ilk harfini büyük yapar.
  3. strtolower Değişkenin tüm harflerini küçük yapar.
  4. strtoupper Değişkenin tüm harflerini büyük yapar.

Not : Yukarıda bahsi geçen PHP fonksiyonları hakkında daha fazla bilgi edinmek için  Php ‘de Harflerin büyük veya Küçük yazılması (ucfirst, ucwords fonksiyonları) isimli makalemi okuyabilirsiniz.

Geliştirdiğimiz karakter isimli Smarty fonksiyonumuzu aşağıdaki gibi kullanabiliriz;

Ilk harf Büyük <br />
{karakter durum=1 yazi="FlashCentury blog"} <br /><br />
Ilk harfler Büyük <br />
{karakter durum=2 yazi="FlashCentury blog"} <br /><br />
Tüm harfler Küçük <br />
{karakter durum=3 yazi="FlashCentury blog"} <br /><br />
Tüm harfler Büyük <br />
{karakter durum=4 yazi="FlashCentury blog"} <br /><br />

Sanırım bu örnekle birlikte Smarty fonksiyon yapısı ve $params değişkenini ne şekilde kullanacağınız konusunda fikir edinmişsinizdir.

Hemen hemen aynı örneği Smarty Block içinde hazırlamıştık, aklınızda peki hangisini kullanmam gerekiyor sorusu gelebilir.  Yukarıdaki örneği block olarak kullanmak bana daha mantıklı geliyor. Bu konuda tercih sizin her iki şekilde de kullanabilirsiniz fakat uzun işlem gerektiren kodlamalarda fonksiyon kullanmanız performans açısından daha uygun olacaktır.

Bu internet sitesi IntenseDebate yorum sistemini kullanıyor. Yorumlar henüz yüklenemedi, çünkü tarayıcınız JavaScript desteklemiyor veya yorumlar yeterince hızlı yüklenemiyor.

Leave a Comment Here's Your Chance to Be Heard!

17 Mart 2010

Etiketler: , , , ,

Benzer Yazılar