PHP後台介面的一些問題

來源:互聯網
上載者:User
關鍵字 php
1.用PHP作後台 關於一些介面的編寫問題。用
try{

if(empty($a) || !isset($a)){    throw new Exception("***")}

} catch (Exception $e){

echo $e->getMessage();

}

和 用
if(isset($a) && !empty($a)){

}

哪種好 有區別麼

回複內容:

1.用PHP作後台 關於一些介面的編寫問題。用
try{

if(empty($a) || !isset($a)){    throw new Exception("***")}

} catch (Exception $e){

echo $e->getMessage();

}

和 用
if(isset($a) && !empty($a)){

}

哪種好 有區別麼

異常處理和條件判斷,很明顯不是一個層面的東西!異常處理可以協助程式增加可維護性,舉例如下:

函數和函數調用情境中

使用條件判斷的話代碼如下:

如果使用異常處理的代碼如下:

getMessage();}

現在我們假設使用條件判斷增加參數或者修改錯誤傳回碼為-2,都需要修改外部調用代碼

但是如果我們用異常處理的代碼,外部因為是通過try catch來捕獲的,所有只需要關心如何修改商務邏輯的代碼即可,比如

getMessage();}

都不好...
對於第一個例子,如果 empty($a) 是 false,那麼!isset($a)必然也是false,如果 empty($a) 是 true,使用者按不會進行後面的判斷
對於第二個例子,相同的一個道理
所以,你的代碼直接用 if (! empty($a)) 就行了。

isset更多的用來檢測數組下標,例如

if (isset($_POST['username'])) {    $username = $_POST['username'];} else {    $username = '';}

如果不做這個檢查可能會引起一個Notice層級的錯誤。
而對於普通的變數,常見的處理為

if (empty($a)) {    $a = 0; //因為$a可能是null, 空, 0, false,所以強調一下用0值表示。}

關於要不要使用try catch結構看你們怎麼定的項目編碼規範了。但是你的用法不對。

if (empty($a)) {    throw new Exception('error');}

就可以了,交給別人去捕獲並處理,自己拋異常然後自己捕獲是形而上學(這裡的自己是指當前的域)。你想想以下兩種寫法有區別嗎?

try{    if(empty($a))throw new Exception('error');}catch(Exception $e) {    die('錯誤');}if (empty($a)) die('錯誤');

try...catch 的目標是捕捉程式運行中拋出的異常.
第一段中把整體程式都被 try 包裹,並且把業務異常當做程式異常拋出.
第二段代碼也是好多項目裡的寫法,業務異常錯誤就響應個錯誤.
和第二段相比較,沒有好或壞,只有是否符合當前項目.
這種代碼設計就要看團隊的開發規範.

目前我這裡也是把業務異常當做代碼異常拋出,在最外層catch所有的異常.
針對不同類型的異常做不同的處理,比如是否寫入日誌,是否警示.

你好:首先你先區別出來isset() 和 empty()不同,isset()判斷的是變數或者值是否設定,至於是空不是空就不管了,而empty()判斷值是否為空白,並不管值是否存在,只做非空判斷。

個人建議用if(isset($a) && !empty($a)){}來做判斷!

個人觀點!!!

我應該怎麼回答這個問題

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.