"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo hacer excepciones PDO de lanza por defecto?

¿Cómo puedo hacer excepciones PDO de lanza por defecto?

Publicado el 2025-02-06
Navegar:804

How Can I Make PDO Throw Exceptions by Default?

PDO Exception Manning Configuration

como desarrollador, puede preferir tener excepciones PDO de lanzamiento de forma predeterminada. Esto elimina la necesidad de establecer explícitamente el modo de manejo de errores cada vez que establece una conexión de base de datos. Si bien puede establecer manualmente el modo de error usando $ dbh-> setattribute (pdo :: attr_errmode, pdo :: errmode_exception), puede preguntarse si hay una manera de hacer de este el comportamiento predeterminado.

Manejo de excepciones

Desafortunadamente, no hay un archivo de configuración incorporado u opción en el archivo php.ini que le permite establecer PDO para lanzar excepciones de forma predeterminada. Esto se debe a que PHP maneja el manejo de errores a nivel mundial, y no es específico para PDO.

Solution

para lograr el comportamiento deseado, tiene dos opciones:

1. Argumento del constructor

puede pasar una matriz de opciones al constructor PDO, incluido el modo de manejo de errores:

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

2. WRAPPER CLASE

Alternativamente, puede crear una clase de envoltorio que extienda PDO y siempre establece el modo de error en modo de excepción:

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

Con este enfoque, puede usar su clase PDO personalizada en lugar de la clase PDO regular y siempre obtener un comportamiento de manejo de excepciones:

$pdo = new MyPDO('mysql:host=localhost;dbname=someDatabase', 'username', 'password');
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3