Каков наилучший способ создания шаблонов с использованием php? - PullRequest
0 голосов
/ 20 августа 2009

У меня есть класс, который собирает шаблоны и отображает окончательный результат после подключения всех шаблонов.

class Template{

$private $output = '';

public function Load_Template($template, $data = null){
    ob_start();
    include($template);
    $this->output .= ob_get_clean();
}

public function Display($add_footer = true){
    echo $this->output;
}

}

Теперь, мои шаблоны выглядят примерно так.

<h1><?php echo $data['name']; ?></h1>

или более сложные, включающие циклы, больше похожи на

<ul>
  <li>
  <?php foreach($data as $user){ ?>
   <h1><?php echo $user['name']; ?></h1>
  <?php } ?>
  </li>
</ul>

На самом деле данных гораздо больше, чем в них, но я уверен, что вы, ребята, поняли суть. Теперь я слышал, как люди говорят, что лучше иметь такие шаблоны

<h1>{name}</h1>

или

<ul>
  <li>
   <h1>{name}</h1>
  </li>
</ul>

, а затем использовать функцию str_replace ... Теперь, если я использую цикл foreach, как бы я мог выполнить что-то подобное ... если бы я изменил свой класс, и если это так, могу ли я получить некоторые идеи о том, как ... И вы, ребята, предлагаете использовать шаблоны с

Ответы [ 4 ]

1 голос
/ 21 августа 2009

Smarty слишком избыточен! Ваш класс с функцией вырезания страницы достаточно.

1 голос
/ 20 августа 2009

Для этих шаблонов типа "{tags}" у вас есть очень популярный движок: Smarty

0 голосов
/ 20 августа 2009

Это должно дать вам представление: http://www.handyphp.com/index.php/PHP-Resources/Handy-PHP-Tutorials/Creating-Your-First-Template-Driven-PHP-Website-Part-2.html

Я нашел его, выполнив быстрый поиск, он содержит код для выполнения того, что вы просите, он выполняет поиск и замену просто созданными вами переменными.

Так что ваш вызов foreach () не будет отражаться, а будет храниться в переменной, тогда вы замените эту переменную на {users} в шаблоне.

0 голосов
/ 20 августа 2009

Каждый язык шаблонов имеет свой собственный подход к проблеме. Вы могли бы вместо того, чтобы писать свой собственный язык шаблонов с нуля, использовать один из стандартных, таких как Smarty.

Если вы пишете свой собственный, вам понадобится как минимум конструкция, которая позволит вам выражать циклы и условные выражения. Один простой подход, который я видел раньше, это что-то вроде:

<!-- BEGIN conditional_or_looped_block_named_foo -->
Stuff that may appear zero or more times
<!-- END conditional_or_looped_block_named_foo -->

Синтаксис, конечно, широко варьируется от одного языка к другому, но основной подход тот же: есть некоторая разметка, которая окружает ту часть кода, которую вы хотите изолировать и повторить (или опустить).

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