0
$url = isset($_GET["url"]) ? $this->checkValues($_GET["url"]) : $this->jDie();
$query = $this->query("SELECT * FROM `torrents` WHERE `url` = '".$url."'");
$fetch = $this->fetch($query) or $this->rURL('/#invalid-url');  

版本 1:

<label><input type="checkbox" name="age" value="3" '.($this->contains("3", $fetch['age']) ? 'checked="checked"' : '').' class="age"/><span>3+</span></label>
<label><input type="checkbox" name="age" value="7" '.($this->contains("7", $fetch['age']) ? 'checked="checked"' : '').' class="age"/><span>7+</span></label>
<label><input type="checkbox" name="age" value="12" '.($this->contains("12", $fetch['age']) ? 'checked="checked"' : '').' class="age"/><span>12+</span></label>

版本 2:

$age = $fetch['age'];

[...]

<label><input type="checkbox" name="age" value="3" '.($this->contains("3", $age) ? 'checked="checked"' : '').' class="age"/><span>3+</span></label>
<label><input type="checkbox" name="age" value="7" '.($this->contains("7", $age) ? 'checked="checked"' : '').' class="age"/><span>7+</span></label>
<label><input type="checkbox" name="age" value="12" '.($this->contains("12", $age) ? 'checked="checked"' : '').' class="age"/><span>12+</span></label>

哪种方式更好?

4

2 回答 2

2

由你决定。如果 $this->fetch(query) 不执行任何清理或验证,那么进入 $_GET[] 或 $fetch 基本上是同一件事。尽管进入 $_GET[] 然后使用未经处理的输入通常被看不起,因为它可能导致错误和漏洞。

于 2013-01-31T18:23:49.983 回答
1

在确定要编写哪个版本的代码时,我建议您问自己一系列问题。

  1. 一个版本是否提供任何类型的性能优势?
  2. 一个版本比另一个版本更具可读性吗?
  3. 一个版本比另一个版本更易于维护吗?

对于 #1,两者基本相等。您在第二个版本中声明了一个新变量,这对性能的影响很小,但不如执行附加查询、读取远程文件等。这将使我更倾向于第一个版本,但是这不像我要回顾我的所有代码来尝试删除不必要的声明变量的每个实例以尝试提高性能。

对于 #2,在上面的代码中,两者本质上是相等的。另一方面,如果你做了很多echos,你可能想要选择声明变量,因为它容易阅读:

echo "You have $num $currency remaining in your $where";

而不是阅读:

echo 'You have ' . $fetch['num'] . ' ' . $fetch['curency'] . ' remaining in your ' . $fetch['where'];

但无论哪种方式,这都不是什么大问题。

对于 #3,它并不真正适用,因为它是如此之小且微不足道。但是,在使用 时$fetch,维护代码的人对变量的来源比您一直定义新变量有更好的了解,所以我再次倾向于第一个,但同样,这没什么大不了的。

于 2013-01-31T18:51:31.803 回答