不使用模板引擎将逻辑与演示分开

时间:2010-04-04 12:56:09

标签: php

如何在不使用任何模板引擎(传统的php-not OOP)的情况下将Logic与表示分离 提前谢谢

2 个答案:

答案 0 :(得分:4)

PHP本身可以用作模板引擎。在输出任何内容之前,先把所有逻辑都放好。简单地说:

  1. 处理您的输入
  2. 将要输出的所有动态数据分配给变量
  3. 运行您的视图代码。视图代码可能位于您包含的单独文件中。
  4. 在视图中,只需使用echoforeach等内容输出您在步骤2中放入变量的数据。

答案 1 :(得分:4)

为什么不将PHP本身用作模板引擎?它在我为您的其他问题发布的代码中使用。您的程序必须分为两个主要部分:获取数据和显示数据。

每个页面都必须拥有自己的模板。在我发布的代码中,有2个非常简单的模板,form.phplist.php
只需用整个网站模板扩展它,你就完成了!
这是一个更复杂的PHP模板示例:

<table border="0" cellpadding="2" cellspacing="0" width="600">
<? foreach ($data as $row): ?> 
  <tr bgcolor="#666699">
    <td align=left>
      <font color="white"><b><?=$row['name']?></b></font>
    </td>
    <td align=right><font color="white">
      <?=$row['date'] ?>
    </font></td>
  </tr>
  <tr bgcolor="f0f0f0">
    <td colspan=2><?=$row['body'] ?></td>
  </tr>
  <? if ($row['answer']): ?>
  <tr bgcolor="d3d3d3">
    <td colspan=2 valign="top">
      <table border="0" cellpadding="0" cellspacing="5">
        <tr>
          <td valign="top"><b>Answer: </b></td>
          <td><?=$row['answer'] ?></td>
        </tr>
      </table>
    </td>
  </tr>
  <? endif ?>
  <? if($admin): ?>
  <tr>
    <td colspan=2>
      <font size=-1>
      <?=$row['id']?> - <?=$row['ip']?> - <?=$row['topic']?>
  <? if($row['del']): ?>
      <a href="/gb/?action=show&id=<?=$row['id']?>">show</a>
  <? else: ?>
      <a href="/gb/?action=hide&id=<?=$row['id']?>">hide</a>
  <? endif ?>
      <a href="/gb/?action=edit&id=<?=$row['id']?>">edit</a>
      </font>
    </td>
  </tr>
  <? endif ?>
<? endforeach ?>
</table>

它就像这样被称为

<?
//some code to get data
include 'tpl_top.php';
include 'tpl_list.php';
include 'tpl_bottom.php';
?>

对我来说很棒! 但是Dunno,如果这是你要求的:)