MVC :Problem dans la classe Model

Eléphanteau du PHP | 19 Messages

29 mai 2016, 16:31

Bonjour à tous,

je suis entrain mtn de creer mon prorpe MVC
J'ai commencé à créer ma classe UserModel qui herite de la classe Model
dans la classe Model je veux créer une fonction qui permet d'inserer les donnes dans la BDD InsertData() et cette fonction doit être appelé ds la class UserModel
le problem je veux preciser les donnes et les champs a inserer depuis la classe UserModel et passer ces donnes a la fonction InsertData ()
comment je peux le faire???

Model.php:
<?php

   class model
   {
   	      private $database;

   	      public function getPdo(){

            if ($this->database===null) {
            	$pdo=new pdo('mysql:host=localhost;dbname=pronostic','root','');
                $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            }
            return $this->database=$pdo;
   	      }

   	      public function InsertData($table,$dato){
            $datas = array(
            		          'usero' => $dato['username'],
            		          'usero' => $dato['password']
            		           );
            	$req="INSERT INTO $table(user,pass) VALUES(:usero,:usero)";
            	$sql=$this->getPdo()->prepare($req);
            	$sql->execute($datas);
   	      } 
   	
   }
UserModel.php:
<?php
        class UserModel extends model
        {
        	            
            function isnertUser($dataa){
            	$model = new model();
            	$resulto=$model->insert('users',$dataa);
            }            
        }
UserController:
<?php

        class UserControllerextends controller
        {
            private $ModelUser;
            function __construct(){

                $this->LoadModel('UserModel');
                $this->ModelUser=new UserModel();
            }
        	
        	function index(){   
               $this->LoadView('show');
              }

            function add(){

                $tab = array(
                    'username' => "Jean",
                    'password' => "qwertz1234",
                     );
                $result=$this->ModelUser->isnertUser($tab); 
               echo "Bien ajoouter";
            }

                
        }

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 10410 Messages

30 mai 2016, 09:18

Bonjour,

Les classes filles héritent des méthodes de leur classe mère. Ainsi le simple fait de définir l'héritage (extends model) sur ta classe UserModel permet à chaque instance de celle-ci de disposer de la méthode InsertData($table,$dato) définie dans la classe parente.

Dans ta classe $this fait référence à l'instance courante. Si dans ta classe fille UserModel tu fais un new model(), alors c'est une nouvelle instance de la classe mère que tu obtiens, totalement distincte de l'instance courante de ta classe fille.

Fais attention également, car tu as de nombreuses coquilles dans ton code (ex : isnertUser ; UserControllerextends controller) qui risquent de te poser problème...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7256 Messages

30 mai 2016, 10:33

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.
Quand tout le reste a échoué, lisez le mode d'emploi...