Как сделать шаблоны в PHP как это? - PullRequest
1 голос
/ 12 сентября 2009

Я перебираю / изучаю код Facebook, который просочился в 2007 году,
Я заметил 1 функцию, которую они вызывают несколько раз на всех страницах, это функция tpl_set (param1, param2)

IЯ собираюсь предположить, что это как-то связано с шаблонами. Функция имеет 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');
?>

1 Ответ

2 голосов
/ 12 сентября 2009

Глядя на фрагмент кода, который вы вставляете, я бы предположил, что 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 и кэширует его, чтобы сделать его быстрее, но основная идея такова.)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...