2009-09-11 24 views
1

我打算過/學習的是在2007年泄露Facebook的代碼,
我注意到1個功能,他們撥打幾遍上的所有網頁是這tpl_set(參數1,參數2)功能如何在php中做這樣的模板?

我要去承擔這是與模板有關的事情,該函數有2個參數/變量傳入它,它看起來像第一個1是模板的名稱,第二個確定是否打開或關閉也許?這只是我的猜測,因爲只有部分代碼可用。這僅僅是爲了學習的目的,基於下面的內容,可以爲該功能編寫什麼樣的代碼來顯示頁面的某個區域?我正在考慮爲學習體驗做一些模板系統,這就是爲什麼我不想使用smarty。

請給我你的想法如何做到這一點?

<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'); 
?> 
+2

我不確定我會認爲Facebook代碼是一個很好的學習來源 – 2009-09-11 23:07:54

+0

Tbh代碼看起來對我來說很蹩腳。在不同情況下的變量名稱,模板的東西看起來像它使用一些靜態變量的東西等 – 2009-09-11 23:39:11

+0

@jasondavis - 實際上,Facebook的PHP編碼不是最好的。他們的編碼都很差。但是,如果您看到Facebook連接演示應用程序Run Around,我會給該應用程序代碼3/10。 – mauris 2009-09-12 02:44:33

回答

2

看着代碼片段粘貼,我會承擔tpl_set套模板特定變量 - 諸如feed_stories模板變量的值設置爲的$feed_stories內容。最後,render_template函數選擇一個模板並渲染它。

既然你說你想做一個自己的模板系統,這裏有幾個要點:

最基本的模板可以是一個PHP文件,比如這個:

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

然後,你可以利用此類似

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

這是在PHP中使用模板的最簡單方法。您可以選擇將上述過程包裝到一個類或一組函數中,這樣您就可以獲得更簡潔的界面。

各種模板引擎(如Smarty)採用的方法是使用自定義語法。如您所知,Smarty允許您使用{$foo}在模板中回顯變量。這樣做的方式是,您首先爲Smarty提供模板中每個變量的值。在呈現模板時,Smarty會在您的模板中執行搜索並替換,用您的值替換Smarty語法。

(它實際上並沒有做到這一點 - 它首先將其轉換爲PHP代碼,並將其緩存,使其速度更快,但其基本思想是)

希望這有助於。

+0

謝謝,這看起來更像你現在正在拼寫的內容。並基於你的例子,我可以基本上將其包裝成一個看起來像Facebook的功能,並讓它做你所描述的,謝謝 – JasonDavis 2009-09-12 00:11:54

相關問題