PDOException::getCode() return value type is string
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.1k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
The following code:
<?php
declare(strict_types=1);
try
{
$pdo = new PDO('mysql:host=127.0.0.1', 'root', 'root');
$pdo->query('select x');
}
catch (\Throwable $e)
{
var_dump($e->getCode());
throw new \Exception($e->getMessage(), $e->getCode(), $e);
}
Resulted in this output:
string(5) "42S22"
PHP Fatal error: Uncaught TypeError: Exception::__construct(): Argument #2 ($code) must be of type int, string given in /mnt/d/projects/imi/imi-2.1/test.php:13
Stack trace:
#0 /mnt/d/projects/imi/imi-2.1/test.php(13): Exception->__construct()
#1 {main}
thrown in /mnt/d/projects/imi/imi-2.1/test.php on line 13
But I expected this output instead:
string(5) "42S22"
PHP Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'x' in 'field list' in /mnt/d/projects/imi/imi-2.1/test.php:8
Stack trace:
#0 /mnt/d/projects/imi/imi-2.1/test.php(8): PDO->query()
#1 {main}
Next Exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'x' in 'field list' in /mnt/d/projects/imi/imi-2.1/test.php:13
Stack trace:
#0 {main}
thrown in /mnt/d/projects/imi/imi-2.1/test.php on line 13
Is it possible to change the return value of Throwable::getCode() to int|string?
PHP Version
8.0.21
Operating System
Ubuntu 20.04
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par examiner la déclaration de Throwable liée dans Zend/zend_exceptions.stub.php et reproduisez l’exemple de PDOException avec PHP 8.0.21. Suivez la manière dont les codes d’exception sont représentés et vérifiés, puis déterminez les exigences de compatibilité pour le type de retour int|string proposé. Le travail est considéré comme terminé lorsque le comportement attendu ainsi que les tests concernés ou les contraintes de l’API sont documentés et validés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- php
- Domaine
- backend-api-design
- Type d'issue
- Bug
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100