2013-01-24 83 views
-1

假設使用isset()函數,我們檢查一個ID是否存在,或者用戶是否提交了一個ID,然後將其分配給變量或在隨後的代碼中使用它。爲什麼在使用它之前檢查一個值是否存在是一種很好的編程習慣?

 <?php 

     if(isset($_GET['Id'])) 
    { 

    $Id=$_GET['Id']; 
    } 
?> 

現在我明白了,這是很好的做到這一點

1)因此,代碼按照預期的行爲,即做什麼它有望完成。例如 - 如果id將被用在某個查詢中,該查詢將根據該id返回一行,那麼提供一個有效的id以確保該查詢確實返回一行作爲結果總是一個好主意...... This避免瞭如果未提供有效標識而導致查詢失敗的意外行爲。

2)同樣明顯的是,儘量減少我們的代碼可能產生的任何運行時錯誤。

所以,我正在尋找更多相關的例子和上下文,爲什麼這總是一個很好的編程習慣。

基本上有更多的例子可以幫助我理解爲什麼這樣做真的很好......非常感謝。

+1

什麼? .......... – markus

+0

你聰明的人誰關閉這個問題不喜歡幫助別人強化一個概念,併成爲一個更好的程序員... :) – user481913

+0

a)你的代碼有錯誤,b)你給自己在這個問題上的答案,使整個事情有點奇怪 – markus

回答

1

想想未來。

如果您僅僅聲明瞭$id = $_GET['id']並稍後使用該變量,那麼您的應用程序可能會以意想不到的方式運行。

說下週你回來,寫一些代碼,使用該convinenent變量$id變量。從掠過文件中看到它在其他地方使用,並且不計劃未設置它。該代碼在您快速測試時有效,但在實際使用中失敗。也許它錯誤了,也許它吐出一個管理頁面,也許它爆炸和殺死小狗,誰知道?

如果你已經有點更加小心,並做類似:

$id = 0; //default document 
if (isset($_GET['id']) 
{ 
    $id = $_GET['id']; 
} 

您的代碼將始終有一個$id的工作。注意那裏的小增加,我不是簡單地確保$_GET['id']存在之前,我將它的值分配給另一個變量,我已確保$id /總是/有一個值。

如果我是一個聰明盎司,我可能會做這樣的事情,而不是:if (isset($_GET['id'] && ctype_digit($_GET['id']) && isValidId($_GET['id']))

+0

- + 1好的答案......如果只有那些關閉這個問題的聰明人會允許它,那麼會很高興看到更多的例子/答案來強化某人的理解並幫助他成爲更好的程序員。:) – user481913

+0

請注意,這僅適用於您有合理的默認值的情況。在許多情況下,最好沒有價值而不是有效的,但不是有效的。 (在這種情況下,你可以使用'null'來做同樣的事情,但是這與這個答案的全部推理不符。) – cHao

相關問題