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ı]

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

JoKeR

avatar
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ş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);





&lt;&lt;&lt;&lt; SüngerBob Fan &gt;&gt;&gt;&gt;
Kullanıcı profilini gör

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

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