2010-04-01 67 views
1

我正在尋找以下任務中的一些編碼思想,我正在努力實現。最好的PHP錯誤類

我在文檔中列出了錯誤編號,描述和用戶友好描述。

Ex: 
Error Number, Description, User Friendly Description 
----------------------------------------------------- 
1, Internal Error, "An Internal Error has occurred. Please try again later". 
2, Delete Failed, "Unable to delete an Entry. Please try later". 

我想要寫一個PHP類來存儲所有的,這樣我可以當代碼中出現錯誤後輕鬆地訪問它們的方式上面..

例如:如果收到我的代碼錯誤2,我想檢查該錯誤代碼與類中的錯誤代碼列表,檢索描述,用戶友好的描述並將其顯示給用戶。

我希望這是最小的開銷。所以,不想將其存儲在數據庫中。

我正在使用PHP5與Zend MVC框架。任何人都可以用最好的示例代碼來幫助我?

感謝

+0

我有一個自定義錯誤和異常處理程序,它有它自己的頁眉和頁腳,並向用戶顯示一個不錯的錯誤頁面,如果我的代碼拋出任何異常。我希望這個班級在發生非常規錯誤時管理或顯示錯誤。我在抽象的課堂模式中想的更多..任何想法? – Jake 2010-04-01 15:03:34

回答

0

我喜歡用一個簡單的custom error handlercustom exception handler是做到以下幾點:

如果在開發模式:

  • 顯示詳細的錯誤信息

  • 如果E_WARNING或更糟,出將錯誤消息放入日誌文件(例如使用Zend_Log

  • 如果一個致命的錯誤,中止執行,並顯示一個友好的錯誤頁面採用了全backtrace

如果在生產模式:

  • 只記錄錯誤信息

  • 致命錯誤,停止執行,並顯示一個很好的「一個錯誤r已經發生「頁面。

我喜歡有錯誤的工作,所以任何例外,我趕上我要求做輸出和記錄一個trigger_error()

您還可以擴展默認的Exception類來執行日誌記錄和顯示。您可能想將發生的任何錯誤轉換爲exceptions。使用throw作爲例外,您將觸發手動錯誤。

靈感:

Kohana的錯誤處理程序(截圖here)是我見過迄今爲止最好的和最偉大的。它是開源的,也許你甚至可以拿出那部分(確保你首先閱讀許可證,但是。)

1
  • 用錯誤代碼和用戶友好文本編寫ini文件。
  • 編寫一個擴展Exception的類,它從ini文件中提取錯誤代碼。添加一個方法 public function getUserFriendlyMsg(){} 它從ini文件返回字符串。

當你有這樣的錯誤,你只需要拋出異常。例如

throw new My_Exception('Delete failed',2); 

在您的例如控制器:

try{ 
    // your code 
}catch(My_Exception $e){ 
    echo $e->getUserFriendlyMsg(); 
} 

注意:你應該考慮延長你的錯誤時拋出類失敗記錄到一個日誌文件,這可以引入servity水平。 (請參閱手冊 - 異常處理)

+0

INI文件不是我的最佳選擇..它會更好地使用PHP類而不是.. – Jake 2010-04-01 15:08:27

+0

您可以使用任何類型的數據文件。您甚至可以使用Zend_Translate以不同語言構建「userfriendly」錯誤消息。 – Rufinus 2010-04-02 07:48:35