Как создать собственную систему шаблонов в PHP - PullRequest
3 голосов
/ 13 августа 2010

Я хочу использовать систему пользовательских шаблонов в своем приложении php,

Что я хочу, так это то, что я хочу сохранить свои php-коды от дизайна, я хотел бы использовать tpl-файл для проектов и php-файл для php-кодов

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

Спасибо

Ответы [ 2 ]

5 голосов
/ 13 августа 2010

Я делаю это, создавая файл шаблона (.tpl, если хотите) и вставляя маркеры, которые будут заменены на str_replace в PHP.Код будет выглядеть примерно так:

Для файла template.tpl

<body>
  <b>Something: </b> <!-- marker -->
</body>

Для PHP

$template = file_get_contents('template.tpl');
$some_data = 'Some Text'; //could be anything as long as the data is in a variable
$template = str_replace('<!-- marker -->', $some_data, $template);
echo $template;

Все в двух словах, но можно получитьнамного сложнее.Маркер может быть любым, если он уникален.

2 голосов
/ 13 августа 2010

Я хочу сохранить свои php-коды от дизайна, я хотел бы использовать файл tpl для проектов

... и смешивать ваши tpl-коды с "design"!
какая разница тогда?:)

Сам по себе PHP является эффективной системой шаблонов.
И в настоящее время большинство разработчиков согласились с тем, что разделение вашего кода PHP на бизнес-логику часть и логику отображения частьпредпочтительный способ.
Конечно, это может быть очень ограниченное подмножество PHP.Вам понадобится оператор вывода (<?=$var?>) один, условие <? if(): ?>...<? endif ?>, цикл <? foreach(): ?>...<? endforeach ?> и include.

Пример такого шаблона:

<table>
<? foreach ($data as $row): ?> 
  <tr>
    <td><b><?=$row['name'] ?></td>
    <td><?=$row['date'] ?></td>
  </tr>
  <tr>
    <td colspan=2><?=$row['body'] ?></td>
  </tr>
  <? if ($row['answer']): ?>
  <tr>
    <td colspan=2 valign="top">
      <table>
        <tr>
          <td valign="top"><b>Answer: </b></td>
          <td><?=$row['answer'] ?></td>
        </tr>
      </table>
    </td>
  </tr>
  <? endif ?>
  <? if($admin): ?>
  <tr>
    <td colspan=2>
  <? if($row['del']): ?>
      <a href="/gb/?action=undelete&id=<?=$row['id']?>">show</a>
  <? else: ?>
      <a href="/gb/?action=delete&id=<?=$row['id']?>">hide</a>
  <? endif ?>
      <a href="/gb/?action=edit&id=<?=$row['id']?>">edit</a>
    </td>
  </tr>
  <? endif ?>
<? endforeach ?>
</table>
...