我正在寫一些簡單的PHP來備份一個微型網站。在我的控制,我有一個快速安全/合理性檢查如何停止執行當前的PHP腳本?
if(!preg_match('/^[a-z]$/i', $req)) { gohome(); }
我想繼續我的主代碼後,這一點,但爲了美觀,我想,以避免把它的其餘部分的else
內塊。最好的解決辦法是什麼?我可以考慮設置一個相當簡單的包裝來處理認證和安全邏輯,但是我覺得我只是在我的培訓中錯過了一個非常簡單的解決方案。
我正在寫一些簡單的PHP來備份一個微型網站。在我的控制,我有一個快速安全/合理性檢查如何停止執行當前的PHP腳本?
if(!preg_match('/^[a-z]$/i', $req)) { gohome(); }
我想繼續我的主代碼後,這一點,但爲了美觀,我想,以避免把它的其餘部分的else
內塊。最好的解決辦法是什麼?我可以考慮設置一個相當簡單的包裝來處理認證和安全邏輯,但是我覺得我只是在我的培訓中錯過了一個非常簡單的解決方案。
您可以使用die/exit函數來結束腳本(有或沒有)錯誤。
如果這是一個函數,通常可以提前返回。
你可以
return gohome();
或
throw new Exception('Request may only contain letters');
要麼將停止特定腳本在該點執行。
請嘗試以下操作。
preg_match('/^[a-z]$/i', $req) or die("exit message here, if you'd like");
這是沒有更好的功能比Xavier的,但我只是喜歡的「這樣做或死」 :)語法/想法也是種讓我想起那些老的任天堂遊戲滑板或者死滑雪或死亡。
+1,用於將復古遊戲加入到等式中。 – 2013-04-05 01:26:33
你可以很簡單地寫出來;
return;
該命令將程序控制權返回給調用腳本,所以;
null
。exit
或die
),除非沒有調用腳本。所以在你的情況下,
if(!preg_match('/^[a-z]$/i', $req))
{
gohome();
return;
}
並且else塊不是必需的,因爲如果條件返回false,它將只會繼續腳本。
這似乎對我的簡單需求很好。我想象我會使用類似Phil Brown在下面所建議的那樣,使用Exception,並將控制器包含在稍微複雜的實現中的try塊中。 – 2010-11-15 00:52:45
@Steven請注意,'exit'會停止整個PHP進程。從那時起,沒有其他代碼可以運行。正如你的問題暗示這是MVC應用程序中控制器操作的一部分,我懷疑這是所期望的行爲。 – Phil 2010-11-15 01:03:06
非常好的一點,MVC環境中的「理想」方式可能會在所有控制器,模型和視圖調用中包含異常處理。 – 2010-11-21 21:26:43