2012-11-28 63 views
0

我有一個用PHP寫的web應用程序。我使用一個類來處理這個應用程序幾乎所有的東西。我在類之前預定義了一些諸如數據庫名稱之類的東西。我所希望的是我可以爲mysql_error()設置一個定義。我可以使用PHP define()函數更改多個die(mysql_error())輸出嗎?

因此,當我運行SQL查詢並添加die()的錯誤時,我希望它輸出「An Error Has Occurred!」如果應用程序在生產環境中運行,但是我可以通過define(「DIEOUTPUT」,「An Error Has Occurred!」)來更改1 define(「DIEOUTPUT」,mysql_error()); (die)()函數看起來像:die(DIEOUTPUT);

這可能嗎?

+1

我會鼓勵你利用一個記錄器庫或者創建一個自定義的'Logger'對象,而不是用'die()'拋出代碼。 –

回答

2

不,這是不可能的。

相反,你可以創建自己的die()版本:

function my_die(){ 
    if($is_production_environement) { 
     die("An error has occured"); 
    } 
    else{ 
     var_dump(mysql_error()); 
    } 
} 

注意

  • 你應該考慮從mysql_*功能客場PDO或mysqli的。
  • 一個真正的網頁使用die()(或my_die()這個問題)是不是太用戶友好,考慮替代方案
+0

$ is_production_environement應該是一個全局變量,或者我更喜歡使用常量。 – RezaSh

+0

@RezaSh它只是代表什麼與您的代碼庫最好的符號。它可能是一個函數來檢查,它可能是一個全局常量......你可以使用任何你喜歡的;) – phant0m

+0

你是真實的,但你已經完成了所有的事情,你的代碼更符合標準的版本;):d – RezaSh

0

兩件事情:

  • 你不應該使用mysql_函數,喜歡mysqli_功能,它們更安全,更高效,並且可以使用新功能
  • 在php中的常量必須靜態定義。你不能在函數調用中使用define。

您的代碼,用mysqli的,應該是這樣的:

mysqli_query('your query') or exit($isProduction?"An error occured":mysqli_error()); 

根據您的使用恆定的願望,你可以使用

define(PRODUCTION,true);//false if dev 
mysqli_query('your query') or exit(PRODUCTION?"An error occured":mysqli_error()); 
相關問題