模板和while循环

时间:2009-02-25 20:28:19

标签: php

我正在制作一个简单的模板系统。不能将代码保存在PHP文件中并将其输出到html文件中是很烦人的... 在模板中使用它并不好:

<?php 
while ($row = mysql_fetch_array($query)) { 
$name = $row['forum_name'];
$date = $row['forum_date'];
$desc = $row['forum_description'];
$lastpost = $row['forum_lastpost'];
?>

<h1><?php echo $name ?></h1>
<p><?php echo $desc ?></p>

<?php } ?>

有什么方法可以将代码保存在PHP文件中吗?

由于

3 个答案:

答案 0 :(得分:2)

我建议在php文件中进行查询和处理,而不是在模板中。在php文件中构建一个数组,然后让模板显示它。

这就是我通常的做法:

PHP文件:

for ($i = 0; $row = mysql_fetch_array($query); $i++)
{
    $forums[$i]['name'] = $row['forum_name'];
    $forums[$i]['date'] = $row['forum_name'];
    $forums[$i]['desc'] = $row['forum_description'];
    $forums[$i]['lastpost'] = $row['forum_lastpost'];
}

模板文件:

<?php foreach ($forums as $forum) { ?>
    <h1><?=$forum['name']?></h1>
    <p><?=$forum['desc']?></p>
<?php } // foreach ($forums as $forum) ?>

另一种语法是使用“endwhile”,正如glavić所示:

<?php foreach ($forums as $forum): ?>
    <h1><?=$forum['name']?></h1>
    <p><?=$forum['desc']?></p>
<?php endforeach; ?>

答案 1 :(得分:1)

我喜欢使用PHP作为模板引擎并使用MVC模式。为了保持View和Business逻辑分离,View中只允许使用几种类型的PHP代码,即HTML代码。允许的代码是:

* Single functions
* Alternate format If / Else / ElseIf blocks
* Alternate format For loops
* Alternate format Foreach loops
* Alternate format Switch statements

PHP为其某些控制结构提供了另一种语法;即,if,while,for,foreach和switch。在每种情况下,替代语法的基本形式是将开括号分别更改为冒号(:)和结束括号为endif;,endwhile;,endfor;,endforeach;或endswitch;。这些替代格式是视图中应使用的唯一格式。

我会承认备用PHP语法较慢(因为解释器跳进和跳出PHP标记)。但是,这通常相当于毫秒的处理时间,并且与大多数环境中的当今服务器没什么区别。

最后,我更喜欢在View中使用速记PHP标签。这通常被认为是一个坏主意,因为服务器支持较少。但是,我认为它略微提高了可读性(特别是在使用PHP作为模板引擎时),我通常会避免使用无法控制此类事物的Web主机。

我更详细地描述了这一点,并在我的网页上有一些关于我为基于Web的PHP应用程序创建的模板的示例。您可以在以下网址找到。

http://www.joeldare.com/wiki/applate

答案 2 :(得分:0)

您可以使用http://dwoo.org/

之类的模板引擎

或使用替代语法,如:

<?php while ($row = mysql_fetch_array($query)): ?>
    <h1><?=$row['forum_name']?></h1>
    <p><?=$row['forum_description']?></p>
<?php endwhile; ?>