我正在像这样扩展PDO类:
class db extends PDO {
function __construct() {
$params = [
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => true
];
try {
parent::__construct('mysql:host=' . $dbHost . ';dbname=' . $dbName, $dbUsername, $dbPassword, $params);
} catch (PDOException $e) {
//error handling
}
}
};
然后我将其用于:
$db = new db();
try {
$stmt = $db->query(...);
} catch (Exception $e) {
//again error handling
}
$data = $stmt->fetchAll();
这行得通,但是在应用程序的许多地方使用try / catch很无聊。有什么方法可以将错误处理事件放入数据库对象,所以我可以简单地使用:
$db = new db();
$stmt = $db->query(...);
$data = $stmt->fetchAll();
目前,objech只保留连接的错误处理,如何使ih捕获所有错误?
注意:由于项目是rest service,因此所有调用的错误处理都是相同的(回显消息,写到php日志,500,死),所以没有必要不在一个地方。