Я всегда хочу, чтобы PDO выдавал исключения, если возникает ошибка, поскольку я всегда использую PDO:
try { $dbh = new PDO("mysql:host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // some queries } catch (PDOException $e) { error_log('PDO Exception: '.$e->getMessage()); die('PDO says no.'); }
Было бы неплохо, если бы был файл конфигурации, который я мог бы редактировать, чтобы сделать так, чтобы PDO выдавал исключения по умолчанию – возможно ли это?
Причина, по которой я хочу этого, так это мне не нужно писать эту строку каждый раз:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Обновление. С тех пор я создал библиотеку, которая обрабатывает доступ к базе данных для меня (включая установку PDO для исключения исключений).
Вы можете добавить функцию setAttribute к конструктору:
$pdo = new PDO('mysql:host=localhost;dbname=someTable', 'username', 'password', array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
Но я не могу найти способ добавить его в файл php.ini или какой-либо другой файл конфигурации.
В дополнение к комментарию rdlowrey самым простым способом было бы:
class MyPDO extends PDO { public function __construct($dsn, $username = null, $password = null, array $driver_options = null) { parent :: __construct($dsn, $username, $password, $driver_options); $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } }
вызов, то это просто вопрос
$dbh = new MyPDO("mysql:host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw);