Böyle php şablonları yapmak nasıl?

1 Cevap php

I am going over/studying the facebook code that was leaked in 2007,
I notice 1 function they call several times on on all the pages is this tpl_set(param1,param2) function

Ben bu şablonları ile ilgili bir şey olduğunu varsaymak gidiyorum, fonksiyon içine geçirilen 2 parametreleri / değişkenleri vardır, ilk 1 gibi görünüyor şablonun adı ve belki kapalı ise veya ikinci bir belirleyen nedir? Kod sadece bir parçası kullanılabilir olduğu gibi bu sadece benim tahminim. Bu sayfanın belirli bir alanını göstermek için, o işlev için yazdı olabilir kod ne tür aşağıdaki gibi bir şey, dayanarak, sadece eğitim amaçlı olduğunu? Ben smarty kullanmak istemiyorum bu yüzden öğrenme deneyimi için şablon sistemi çeşit yapmayı düşünüyorum.

Bana bunu nasıl fikir verin?

<php
tpl_set('home_announcement', $home_announcement_tpl);
tpl_set('hide_announcement_bit', $HIDE_ANNOUNCEMENT_BIT);
tpl_set('orientation_info', $orientation_info);
tpl_set('feed_stories', $feed_stories);

if ($show_friend_finder && (user_get_friend_count($user) > 20)) {
    tpl_set('friend_finder_hide_options', array('text' => 'close', 'onclick' => "return clearFriendFinder()"));
}

//end of page has this
render_template($_SERVER['PHP_ROOT'] . '/html/home.phpt');
?>

1 Cevap

Böyle $feed_stories içeriğine feed_stories şablonu değişkenin değerini ayarlama gibi - koduna bakarak ben tpl_set şablonunda belirli değişkenlerini ayarlar varsayılabilir, yapıştırmak pasajı . Sonunda, render_template işlevi bir şablon seçer ve onu işler.

Eğer bir şablon sistemi kendiniz yapmak istiyorum diyorsan, burada birkaç noktalar bulunuyor:

: En temel şablon bu gibi bir PHP dosyası olabilir

//mytemplate.php
<h1><?php echo $title; ?></h1>
<p><?php echo $content; ?></p>

Sonra, bu kadar gibi bu kullanmak olabilir

$title = 'some title';
$content = 'Hello world';
require 'mytemplate.php';

Bu PHP şablonları için basit yoludur. İsteğe bağlı fonksiyonları ayarlanmış bir sınıf veya içine yukarıdaki işlemi tamamlamayı, bu nedenle biraz daha temiz bir arayüz olsun.

Böyle Smarty gibi çeşitli şablon motorları tarafından alınan bir yaklaşım, özel bir sözdizimi sahip olmaktır. Bildiğiniz gibi, Smarty sen {$foo} şablonları değişkenleri echo kullanmanızı sağlar. Bu eserler yolu, ilk olarak şablonda her değişken için değerler ile Smarty sağlamaktır. Şablonu işlerken, Smarty bir arama yapar ve değerleri ile Smarty-sözdizimi yerine, kendi şablonuna değiştirin.

(Aslında bunu yapmaz - PHP koduna ilk dönüştürür ve daha hızlı yapmak için önbelleğe, ancak temel fikir olduğunu.)

Umarım bu yardımcı olur.