PHP
ile basit şablon işlemleri örneğiBildiğimiz gibi PHP ile
şablon kullanımında çoğunlukla Smarty tercih edilmekte.
Smarty şablon içerisinde kendisine özgü değişken kontrol deyimleri (if 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);
ile basit şablon işlemleri örneğiBildiğimiz gibi PHP ile
şablon kullanımında çoğunlukla Smarty tercih edilmekte.
Smarty şablon içerisinde kendisine özgü değişken kontrol deyimleri (if 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);