使用变量或不使用PHP获取

时间:2013-01-31 18:21:15

标签: php variables fetch

$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>

哪种方式更好?

2 个答案:

答案 0 :(得分:2)

由你决定。如果$ this-&gt; fetch(查询)不执行任何清理或验证,那么进入$ _GET []或$ fetch基本上是一回事。虽然进入$ _GET []然后使用未经过处理的输入通常被低估,因为它可能导致错误和漏洞。

答案 1 :(得分:1)

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

  1. 一个版本是否提供任何性能优势?
  2. 一个版本比另一个版本更具可读性吗?
  3. 一个版本是否比另一个版本更易于维护?
  4. 对于#1 ,两者基本相同。您在第二个版本中声明了一个新变量,这将是性能损失微不足道,但不会像执行其他查询,读取远程文件等那么多。这会导致我精益更多的是朝着第一个版本,但它不会像我要回过头来尝试删除不必要的声明变量的每一个实例来尝试提高性能。

    对于#2 ,在上面的代码中,两者基本相同。另一方面,如果你做了很多echo s,你可能会想要声明变量,因为稍微更容易阅读:

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

    比阅读:

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

    但无论如何,这并不重要。

    对于#3 ,它实际上并不适用,因为它太小而且无关紧要。但是当使用$fetch时,维护代码的人对变量的来源有一个比你一直定义新变量更好的想法,所以我再次精益朝向第一个,但同样,这不是什么大事。