我正在考慮在我所有未來的webapp中使用PDO。目前(使用的是什麼我從SO學會爲止),我在我的網站來處理數據庫連接是一個Singleton類是這樣的:PDO try-catch函數的使用
class DB {
private static $instance = NULL;
private static $dsn = "mysql:host=localhost;dbname=mydatabase;";
private static $db_user = 'root';
private static $db_pass = '0O0ooIl1';
private function __construct()
{
}
private function __clone()
{
}
public static function getInstance() {
if (!self::$instance)
{
self::$instance = new PDO(self::$dsn, self::$db_user, self::$db_pass);
self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
}
和其他文件(functions.php中)與特定內容功能看正是這樣一個:
function get_recent_activities()
{
try
{
$db = DB::getInstance();
// --prepare and execute query here, fetch the result--
return $my_list_of_recent_activities;
}
catch (PDOException $e)
{
return "some fail-messages";
}
}
...
這意味着我必須重複try .. catch
部分中的所有的功能。
我的問題是:
- 我應該如何做出更有效? (例如,不必在所有功能中重複
try..catch
,但仍然能夠在每一個功能上返回不同的「失敗消息」) - 這是否已經是一種很好的做法?我還是PDO和OOP的新手(還有很多需要學習),所以(現在)我看不出任何缺點或可以改進的地方。
對不起,如果這似乎不清楚或太長。提前致謝。
第二個pd說的是,我對自定義錯誤類的使用只是將錯誤記錄到數據庫並向我發送一封電子郵件。最終用戶從不會看到堆棧跟蹤或其他不友好的情況。這就是爲什麼如果出現錯誤,我返回false,然後測試我的查詢的返回值,以確定告訴用戶什麼 – 2008-11-08 11:36:29