$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>
哪种方式更好?
由你决定。如果 $this->fetch(query) 不执行任何清理或验证,那么达到 $_GET[] 或 $fetch 基本上是一回事。尽管达到 $_GET[] 然后使用未修复的输入通常会被看不起,因为它可能导致错误和漏洞。
在确定要编写哪个版本的代码时,我建议你问自己一系列问题。
- 一个版本是否提供任何类型的性能优势?
- 一个版本比另一个版本更具可读性吗?
- 一个版本是否比另一个版本更易于维护?
对于#1,两者基本上是相等的。您在第二个版本中声明了一个新变量,这将对性能造成微不足道的影响,但远不如执行其他查询、读取远程文件等那么严重。这会导致我更倾向于第一个版本,但这并不是说我要回顾我的所有代码来尝试删除不必要的声明变量的每个实例以提高性能。
同样,对于 #2,两者在上面的代码中基本上是相等的。另一方面,如果您正在做很多echo
,您可能希望选择声明变量,因为它更容易阅读:
echo "You have $num $currency remaining in your $where";
而不是阅读:
echo 'You have ' . $fetch['num'] . ' ' . $fetch['curency'] . ' remaining in your ' . $fetch['where'];
但无论哪种方式,这都没什么大不了的。
对于#3,它并不真正适用,因为这太小了,微不足道。但是,在使用$fetch
时,维护代码的人比您一直定义新变量时对变量的来源有更好的了解,所以我再次倾向于第一个,但同样,这没什么大不了的。