3 votes

Manière correcte d'appeler mysqli en utilisant Intelephense PHP

Ce code déclenche mon intelephense d'éditeur pour une erreur :

/**
 * Se connecter à la base de données
 */
public function link() {
    global $config; mysqli_report(MYSQLI_REPORT_ERROR);
    try {
        return new \mysqli($config['db_hostname'], $config['db_username'], $config['db_password'], $config['db_name']);
    } catch (\exception $e) {
        throw new \exception($e->getMessage(), $e->getCode());
    }
}

6 arguments attendus. 4 trouvés. intelephense(10005)

Est-ce que ça irait si je me contentais de :

return new \mysqli($config['db_hostname'], $config['db_username'], $config['db_password'], $config['db_name'],null,null);

Merci à tous pour vos réponses; aussi à deceze qui m'a corrigé sur la mauvaise manière d'attraper l'exception;

Voici le code modifié :

/**
 * Se connecter à la base de données
 */
public function link() {
    global $config; mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    try {
        return new \mysqli($config['db_hostname'], $config['db_username'], $config['db_password'], $config['db_name'], ini_get('mysqli.default_port'), ini_get('mysqli.default_socket'));
    } catch (\exception $e) {
        echo 'Impossible de se connecter à un serveur de base de données'; die();
    }
}

Remarque, ceci est pour l'utilisation de la classe avec des espaces de noms...

2voto

webmaster777 Points 331

Le plugin intelephense utilise les stubs de PhpStorm. L'auteur a déjà soumis une PR pour corriger cela (et d'autres fonctions avec des paramètres facultatifs) : https://github.com/JetBrains/phpstorm-stubs/pull/520.

Dès que cela sera fusionné et que les stubs seront mis à jour, vous ne devriez plus recevoir le problème signalé dans vscode.

Il ne devrait pas être nécessaire de modifier votre appel de constructeur, c'est un code valide et s'exécutera sans problèmes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X