将代码保存在单独的文件中

时间:2009-07-01 12:29:26

标签: php sql mysql

topic.php

$id = isset($_GET['id']) ? intval($_GET['id']) : 0;

$query = mysql_query("SELECT * FROM topics WHERE id = $id");
$row = mysql_fetch_assoc($query);


$title = htmlspecialchars($row['title']);
$text = bbcode($row['text']);

查看/ topic.php

<h1><?=$title?></h1>
<p><?=$text?></p>

<h1>Replies</h1>

$q = mysql_query("SELECT * FROM replies WHERE topic_id = $id");
while ($r = mysql_fetch_array($q)) {
$text = bbcode($r['text']);
$date = $r['date'];
$poster = $r['poster'];
$edited = $r['edited'];

echo "<p>$text</p>";.......
}

正如您所看到的,我在view / topic.php中有一些丑陋的代码。我能以某种方式将它保存在topic.php中吗?网页设计师必须处理这一切并不好玩。

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以尝试将viewtopic.php中的代码放入topic.php中的函数中。

看起来你已经在viewtopic.php中包含了topic.php,但是如果你不是,那么你也会想要这样做。

例如,您可以将其添加到topic.php:

function ViewTopic($id) {

     $q = mysql_query("SELECT * FROM replies WHERE topic_id = $id");
     while ($r = mysql_fetch_array($q)) {
     $text = bbcode($r['text']);
     $date = $r['date'];
     $poster = $r['poster'];
     $edited = $r['edited'];

     echo "<p>$text</p>";.......

}

这就是viewtopic.php的样子:

<h1><?=$title?></h1>
<p><?=$text?></p>

<h1>Replies</h1>

ViewTopic($id);

}

答案 1 :(得分:1)

你可以把所有代码都扔到一个函数中,返回你需要的东西。然后调用函数echo func()

答案 2 :(得分:0)

使用输出缓冲,您可以轻松创建自己的小模板引擎,实现更好的逻辑/布局分离。

function renderView($viewFile, $data) {
    ob_start();
    extract($data);
    require($viewFile);
    return ob_get_clean();
}

上面的代码来自一个小爱好项目并且它不完整,但它是一个很好的概念证明。它的作用是从$ data hashmap中提取键/值对,使它们在当前作用域中可用。 $ data = array(“name”=&gt;“Kim”);将在视图中访问$ name。

所有这些都在输出缓冲中完成,因此您可以使用输出执行任何操作。您可能希望实现缓存,使用它来呈现电子邮件(不再需要过多的字符串连接)等等。