如何在PHP中创建自定义模板系统

时间:2010-08-13 05:14:49

标签: php templates template-engine

我想在我的php应用程序中使用自定义模板系统,

我想要的是我想要从设计中删除我的php代码,我想使用tpl文件进行设计,使用php文件进行php代码

我不想使用任何现成的女佣脚本。可以任何人指出一些链接或有用的信息如何建立一个PHP模板系统来实现这个

谢谢

2 个答案:

答案 0 :(得分:5)

我这样做的方法是创建一个模板文件(如果你愿意的话.tpl)并插入将在PHP中用str_replace替换的标记。代码看起来像这样:

对于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;

简而言之,它可以变得更加复杂。标记可以是任何东西,只要它是唯一的。

答案 1 :(得分:2)

  

我想从设计中删除我的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>