Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur générale :impossible d'appeler le constructeur de classe'

Comme mentionné dans la documentation :

public array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

ctor_args

Arguments of custom class constructor when the fetch_style parameter is PDO::FETCH_CLASS.

le même argument est disponible pour setFetchMode

public bool PDOStatement::setFetchMode ( int $PDO::FETCH_CLASS , string $classname , array $ctorargs )

J'implémenterais ceci en conséquence :

Ajoutez d'abord une propriété $ctorArgs vers \Core\Model avec une valeur par défaut de null .Suivi en remplaçant le setFetchMode actuel appels

if (!is_array($this->ctorArgs)) throw new \Excpeption("\"ctorArgs\" must be of type array");
$stm->setFetchMode(PDO::FETCH_CLASS, get_called_class(), $this->ctorArgs);

Et enfin ajouter une propriété $ctorArgs vers \App\Models\Admin\Photo avec une valeur par défaut de array("picture") .

Cela indiquera au code que votre constructeur attend le paramètre $picture .

Je penserais à utiliser une constante au lieu d'une propriété, mais cela dépend de la façon dont vous décidez de l'implémenter.