2009-09-11 2 views
1

перебирает/изучение кода facebook, что просочились в 2007 году,
я замечаю 1 функцию они называют несколько раз на всех страницах это tpl_set (param1, param2) функциюКак сделать шаблоны в 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 отличным источником обучения –

+0

Tbh, что код выглядит довольно дрянной для меня. Переменные имена в другом случае, шаблонная вещь выглядит так, как будто она использует некоторые статические переменные и т. Д. –

+0

@jasondavis - на самом деле PHP-кодирование facebook не самое лучшее. ни у них плохо написано. Однако, если вы видите, что приложение facebook подключится к демонстрационному приложению Run Around, я бы дал код приложения 3/10. – mauris

ответ

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

спасибо, что больше похоже на то, что он делает сейчас, когда вы это изложили. И, основываясь на вашем примере, я мог бы полностью превратить его в функцию, похожую на фейсбук, и заставить ее делать то, что вы описали, спасибо – JasonDavis

Смежные вопросы