Yesilim
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Yesilim


Bağlı değilsiniz. Bağlanın ya da kayıt olun

PHP İle Template (Şablon) İşlemleri

Aşağa gitmek  Mesaj [1 sayfadaki 1 sayfası]

1PHP İle Template (Şablon) İşlemleri Empty PHP İle Template (Şablon) İşlemleri Perş. Tem. 01, 2010 6:03 pm

JoKeR

JoKeR
Bağımlı Üye
Bağımlı Üye

PHP
ile basit şablon işlemleri örneği
Bildiğimiz gibi PHP ile
şablon kullanımında çoğunlukla Smarty tercih edilmekte.
Smarty şablon içerisinde kendisine özgü değişkenPHP İle Template (Şablon) İşlemleri Virgulll kontrol deyimleri (ifPHP İle Template (Şablon) İşlemleri Virgulll else gibi) ve döngüleri
destekliyor. Fakat bunun yanı sıra zaten PHP'nin kendisinin zaten bir
Template sistemi olması ve Smarty ve benzeri Sınıfların ise yapılmak
istenen işlem için çok fazla kod içermesi programcının bu sınıfları
kullanmadan önce iki defa düşünmesini gerektiriyor. Sorunlardan biri
başkasının yazdığı koda tam anlamıyla vakıf olmamak dolayısıyla koda
müdahale edilmesi gerektiğinde uzun uzun analiz etme zorunda kalmak.

Muhalif olarak açık kaynak çoğu programcı hataları varsa bunu fark edip
buglar düzeltiliyor densede. Tercih programcıya kalmış.

Bu örnekte ise vereceğimiz iki alternatif yaklaşım kontrol deyimleri
olmasada değişken bazında Şablon sistemi işlemine değinmek olacaktır.

Örnek 1-1 (deneme.tpl):

PHP- Kodu:




<h1>{$title}</h1>
<p>{$descr}</p>
{$story}


Örnek 1-2:

<?php

$title
= "İşte Başlık";
$descr = "Kısa Açıklama";
$story = "İşte Bu Bizim Hikayemiz";

$tplFile = realpath("./").DIRECTORY_SEPARATOR."deneme.tpl";
$result = addslashes(implode("", file($tplFile)));
eval(
"\$result="$result";");
print
stripslashes($result);
?>






Örnek 2-1 (deneme.tpl):


Kod:

<h1>{title}</h1>
<p>{descr}</p>
{story}

Örnek 2-2:


Kod:

$title = "İşte Başlık";
$descr = "Kısa Açıklama";
$story = "İşte Bu Bizim Hikayemiz";

$tplFile = realpath("./").DIRECTORY_SEPARATOR."deneme.tpl";
$strTheme = implode("", file($tplFile));

$patterns = array("/title/", "/descr/","/story/");
$replace = array($title, $descr, $story);

$patterns[] = "/(\{[^\}])(\\w+)([^\{]\})/";
$replace[] = '\\2';

print preg_replace($patterns, $replace, $strTheme);

Tabi bu örnekleri çok daha çeşitlemek mümkün Veritabanından
aldığınız bir sorguyu şu aşşağıda ki örnekdeki kullanmakda mümkün


Kod:

function getTheme($obj, $strTheme) {
global $_SERVER;
foreach($_SERVER as $k=>$v) {
if(is_string($v)) {
$patterns[] = "/{{$k}}/";
$replace[] = $v;
}
}
foreach($obj as $k=>$v) {
if(is_string($v)) {
$patterns[] = "/{{$k}}/";
$replace[] = $v;
}
}
$patterns[] = "/(\{[^\}])(\\w+)([^\{]\})/";
$replace[] = '\\2';
return preg_replace($patterns, $replace, $strTheme);
}

$deneme->title = "Veritabanından gelse bu başlık";
$deneme->descr = "m[sy]sql_fetch_object";
$deneme->story = "Başarılar";

$tplFile = realpath("./").DIRECTORY_SEPARATOR."deneme.tpl";
$strTheme = implode("", file($tplFile));

print getTheme($deneme, $strTheme);

Sayfa başına dön  Mesaj [1 sayfadaki 1 sayfası]

Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz