2012-07-15 84 views
3

當我填寫的變量,我可以做這樣的事情?:我可以使用die來填充變量嗎?

$type = isset($_GET['type']) ? $_GET['type'] : die(); 

通過這樣做,如果「類型」是不是在要求,我的功能將退出。這是使用die()的正確方法嗎?

回答

3

如果您只想讓您的功能退出,請使用return。然而,這不是一種表達,所以你需要將其更改爲if聲明:

if(!isset($_GET['type'])) { 
    return; 
} 

$type = $_GET['type']; 

如果你想你的整個頁面停止執行,那麼是的,這是正確的(但我仍然使用爲清楚起見,if)。

+0

+1三元運算符是_evil_ – Lusitanian 2012-07-15 02:27:51

+3

@大衛沒有辦法,不是邪惡!只是不適合這個目的。三態是用於條件值賦值或返回,而不是複雜的分支或腳本終止。 – 2012-07-15 02:28:13

+3

三元邪惡?垃圾... – Brad 2012-07-15 02:28:33

1

是和否。是的,因爲你所做的技術上是正確的,並且如果變量不存在,將會終止腳本,但是如果你想要測試代碼,則不應該使用die構造。 PHP是一種面向對象的語言(從版本5開始),它是一個非常強大的語言。它支持使用您可能想要在此處使用的高級錯誤處理的例外。

1

您不能使用die()來填充變量。 die()終止您的代碼。相反,你可以考慮下面的代碼:

$type = isset($_GET['type']) ? $_GET['type'] : null;

+0

[我不同意。](http:// codepad。org/pt6PcNd7) – Ryan 2012-07-15 02:28:30

+0

@minitech,你能詳細說明你想用你的鍵盤示例解釋什麼嗎? – Brad 2012-07-15 02:30:15

+0

@布拉德:你可以把它放在一個內聯的條件下,沒問題。除非這不是sikas的意思? – Ryan 2012-07-15 02:30:45

0

模具()函數將結束整個PHP程序,而不是退出您所在的功能除此之外,代碼爲依託PHP是一種愚蠢的事實。 die()嚴格應該是一個無效函數,但你的電話取決於它返回東西 - 它做,但不應該。

你真正想要的是一個簡單的如果聲明:

if(! isset($_GET['type'])) 
    return; 

$type = $_GET['type']; 

的另一件事是,如果這個代碼是在一個函數,$類型的值將不會被保留,除非它被聲明爲全球。

1

Ternary Operator Docs說,這:

$type = isset($_GET['type']) ? $_GET['type'] : die(); 

等同於這個if/else語句:

if (isset($_GET['type'])) 
    $type = $_GET['type']; 
else 
    $type = die(); 

它的工作原理,因爲die()將被調用,將停止腳本執行,但是,這不是」這是一個很好的做法。如果沒有這個想法,你可以使用if和else語句,如果$ _GET ['type']不存在,只需調用die(),如下所示。

if (isset($_GET['type'])) 
    $type = $_GET['type']; 
else 
    die('type not found'); 
相關問題