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中吗?网页设计师必须处理这一切并不好玩。
谢谢!
答案 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。
所有这些都在输出缓冲中完成,因此您可以使用输出执行任何操作。您可能希望实现缓存,使用它来呈现电子邮件(不再需要过多的字符串连接)等等。