Maison >base de données >tutoriel mysql >Comment puis-je faire en sorte que PDO lève des exceptions par défaut ?

Comment puis-je faire en sorte que PDO lève des exceptions par défaut ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 05:26:18217parcourir

How Can I Make PDO Throw Exceptions by Default?

Configuration de la gestion des exceptions PDO

En tant que développeur, vous préférerez peut-être que PDO lève des exceptions par défaut. Cela élimine le besoin de définir explicitement le mode de gestion des erreurs chaque fois que vous établissez une connexion à la base de données. Bien que vous puissiez définir manuellement le mode d'erreur à l'aide de $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION), vous vous demandez peut-être s'il existe un moyen d'en faire le comportement par défaut.

Gestion des exceptions par défaut

Malheureusement, il n'y a pas de fichier de configuration intégré ni d'option dans le fichier php.ini qui vous permet de configurer PDO pour qu'il lève des exceptions par défaut. En effet, PHP gère la gestion des erreurs de manière globale et n'est pas spécifique à PDO.

Solution

Pour obtenir le comportement souhaité, vous avez deux options :

1. Argument du constructeur

Vous pouvez transmettre un tableau d'options au constructeur PDO, y compris le mode de gestion des erreurs :

$pdo = new PDO('mysql:host=localhost;dbname=someDatabase', 'username', 'password', array(
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));

2. Classe Wrapper

Vous pouvez également créer une classe wrapper qui étend PDO et définit toujours le mode d'erreur en mode exception :

class MyPDO extends PDO {
  public function __construct($dsn, $username, $password) {
    parent::__construct($dsn, $username, $password, array(
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ));
  }
}

Avec cette approche, vous pouvez utiliser votre personnalisé Classe PDO au lieu de la classe PDO normale et obtenez toujours un comportement de gestion des exceptions :

$pdo = new MyPDO('mysql:host=localhost;dbname=someDatabase', 'username', 'password');

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn