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

Posted

技术标签:

【中文标题】将代码保存在单独的文件中【英文标题】:Keep code in separate file 【发布时间】:2009-07-01 12:29:25 【问题描述】:

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 中吗?网页设计师不得不处理这一切并不好玩。

谢谢!

【问题讨论】:

你能澄清你想要什么吗?您是否希望代码仅存在于一个地方? 是的,没错,我想将代码保存在 1 个文件中 我没有打开 register_globals,刚刚检查过 【参考方案1】:

您可以尝试将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);


【讨论】:

请注意,原始代码和此答案都包含 SQL 注入漏洞。任何人都可以传递任何他们想要的 ID(包括恶意 SQL),您的代码将执行它。见***.com/questions/1973/… 好收获。在 SQL 查询中使用 $_GET 时应该小心。【参考方案2】:

您可以将所有这些代码放入一个返回所需内容的函数中。然后调用函数echo func()

【讨论】:

【参考方案3】:

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

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

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

所有这些都是在输出缓冲中完成的,所以你可以对输出做任何你想做的事情。您可能想要实现缓存,使用它来呈现电子邮件(不再需要过多的字符串连接)和类似的东西。

【讨论】:

以上是关于将代码保存在单独的文件中的主要内容,如果未能解决你的问题,请参考以下文章

怎样将word文档中的图片单独保存下来?

如何将图像保存到具有来自先前视图控制器的 id 的单独相册中

将 Qt DLL 保存在单独的文件夹中

Django:将用户上传保存在单独的文件夹中

将每个 excel 列数据保存到单独的文本文件中

MATLAB-将工作区变量单独保存到许多单独的 .mat 文件中