Maison  >  Questions et réponses  >  le corps du texte

Requis pour être compatible avec PDOStatement::fetchAll(int $mode = PDO::FETCH_DEFAULT, Mixed ...$args)

Notre client possède un site Web Drupal, mais l'hébergeur force tous les clients à passer de PHP 7.4 à PHP version 8, ce qui entraîne une erreur fatale PDO qui empêche le chargement du site Web.

Erreur reçue :

Erreur fatale : déclaration DrupalCoreDatabaseStatement::fetchAll(int $mode = PDO :: FETCH_DEFAULT, $column_index = null, $constructor_arguments = null) doit être compatible avec PDOStatement::fetchAll(int $mode = PDO::FETCH_DEFAULT, mixte...$args) /usr/www/users/kdpsipxqzt/core/lib/Drupal/Core/Database/Statement.php À la ligne 168

La fonction à l'origine du problème :

ERROR (L 168) -> 
public function fetchAll($mode = null, $column_index = NULL, $constructor_arguments = NULL) {
    // Call PDOStatement::fetchAll to fetch all rows.
    // PDOStatement is picky about the number of arguments in some cases so we
    // need to be pass the exact number of arguments we where given.

    switch (func_num_args()) {
      case 0:
        return parent::fetchAll();
      case 1:
        return parent::fetchAll($mode);
      case 2:
        return parent::fetchAll($mode, $column_index);
      case 3:
      default:
        return parent::fetchAll($mode, $column_index, $constructor_arguments);
    }
  }

Quelqu'un a-t-il des idées pour résoudre ce problème ?

J'ai essayé plusieurs façons de dépanner et d'ajuster la fonction pour mieux correspondre à la fonction parent PDOStatement de PHP, mais sans succès !

Comparaison avec la PDOStatement de PHP :

public function fetchAll($how = null, $className = null, $ctorArgs = null)

Est-ce que j'ai raté quelque chose ?

P粉308089080P粉308089080287 Il y a quelques jours411

répondre à tous(1)je répondrai

  • P粉265724930

    P粉2657249302023-12-11 11:18:48

    Le type de retour doit être défini sur 数组 : 

    public function fetchAll($mode = null, $column_index = null, $constructor_arguments = null) : array { ... }

    Si vous utilisez PHP8.1, vous pouvez contourner cette erreur en ajoutant le commentaire #[ReturnTypeWillChange]

    répondre
    0
  • Annulerrépondre