2013-01-31 83 views
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擷取:具有可變或不PHP

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

哪種方式更好?

+0

使用你喜歡的。我個人比較喜歡版本1. – Tchoupi

+0

感謝您的回答 –

回答

2

由你決定。如果$ this-> fetch(query)不執行任何清理或驗證,那麼達到$ _GET []或$ fetch基本上是一樣的。雖然涉及到$ _GET [],然後使用未經協商的輸入通常會被忽視,因爲它可能導致錯誤和漏洞。

1

當確定要編寫哪個版本的代碼時,我會建議您問自己一系列問題。

  1. 一個版本是否提供任何性能優勢?
  2. 一個版本比另一個版本更易讀嗎?
  3. 是否有一個版本比另一個版本更易維護?

對於#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時,維護代碼的人對變量來自哪裏的想法要比如果你始終定義新的變量稍微好一點,所以我會再次傾向於第一個變量,但再次,它不是什麼大問題。