Je veux toujours que PDO lève des exceptions si une erreur se produit, car j'utilise toujours PDO comme ceci:
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.');
}
Ce serait bien s'il y avait un fichier de configuration que je pourrais éditer pour que PDO lève des exceptions par défaut - est-ce possible?
La raison pour laquelle je veux cela est que je n'ai pas à écrire cette ligne à chaque fois:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
pdate - J'ai depuis créé une bibliothèque qui gère l'accès à la base de données pour moi (y compris la configuration de PDO pour lever des exceptions).
Vous pouvez ajouter la fonction setAttribute au constructeur:
$pdo = new PDO('mysql:Host=localhost;dbname=someTable', 'username', 'password', array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
Mais je ne trouve pas de méthode pour l'ajouter au fichier php.ini ou à un autre fichier de configuration.
En complément du commentaire de rdlowrey, la manière la plus simple serait:
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);
}
}
l'invocation est alors simplement une question de
$dbh = new MyPDO("mysql:Host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw);