Bonjour tout le monde,
voilà j'ai un petit problème avec mon script et je ne comprend pas pourquoi.
Quelqu'un pourrait m'éclairé s'il vous plaît ?
Mon but est d'ajouter un utilisateur en BDD en utilisant de la POO, mais il me renvoie une erreur de préparation de requête ;

Fatal error: Uncaught Error: Call to a member function prepare() on null in fichier\Model.php:72 Stack trace: #0 fichier\index.php(36): Model->add(Object(Controller)) #1 {main} thrown in fichier\Model.php on line 72
mon code en index contient les objets appelant les classes et connexion en bdd ;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 $request = new PDO('mysql:host=localhost;dbname=test','root','');
 $request->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 $control = new Controller($request);
 $mod = new Model;
et j'ajoute un user avec cette ligne ;
Sachant que ma classe Model contient les fonctions retournant l'identifiant et les set mais aussi la fonction add et hydrate ;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function add(Controller $user){
       $req = $this->_data->prepare('INSERT INTO tests (name, pass) VALUE (:formname, :formpass)');     (ici est la ligne 72)
        $req->bindValue(':formname', $user->name(), PDO::PARAM_STR);
        $req->bindValue(':formpass', $user->pass(), PDO::PARAM_STR);
        $req->hydrate([
            'id' => $this->_data->lastInsertId(),
            'name' => $this->_data->name(),
            'pass' => $this->_data->pass(),
        ]);
        $req->execute();
    }
 
    public function hydrate(array $data){
        foreach($data as $key => $value){
            $method = 'set'.ucfirst($key);
            if(method_exists($this, $method)){
                $this->$method($value);
            }
        }
    }
 
    public function __construct(array $data = array()){
        $this->hydrate($data);
    }
et que le fichier de controller contient la construction et set de bdd ;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 private $_data;
 
    public function __construct($data){
        $this->setData($data);
    }
 
    public function setData(PDO $data){
        $this->_data=$data;
    }
Voilà je ne sais pas ce que je peux rajouter pour vous aidé à mieux comprendre, mais merci à l'avance pour votre aide.