3. Gestion des models

Comme préciseé dans la partie 1.b.3, les modèles sont des classes d’accès aux informations d’une base de données.

3.1. Création Models

Les models doivent être créées dans un répertoire model qui se trouve dans le dossier src.

3.2. Définition du code des models

3.2.1. Héritage

Chaque modéle que vous créez doit hériter de la super class controller du framework.

Attention

Ne pas oublier d’effectuer l’héritage entre constructeurs.

<?php
    namespace src/model;
    use libs/system/Model;

    class TestDB extends Model{
        public function __construct(){
            parent::__construct();
            //Appel du model grace au systeme autoloading
        }
    }
?>

3.2.2. Chargement des models dans un controller

Suivant l’espace de nom, utiliser le mot clé USE.

<?php

  use libs\system\Controller;
  use src\entities\Test as TestEntity;
  use src\model\TestDB;
  class Test extends Controller{

    public function __construct(){
          parent::__construct();
          //Appel du model grace au systeme autoloading
    }
?>

3.2.3. Exécution d’une requete SQL dans le model

Utiliser $this->db pour éxecuter toutes les requêtes SQL

<?php
     /**
     * @param $ID
     * @return mixed|null
     */
    public function getTest($ID)
    {
        $sql = "SELECT *
                 FROM test
                 WHERE test.ID = ".$ID;
        if($this->db != null)
        {
          return $this->db->query($sql)->fetch();
        }else{
          return null;
        }
    }
?>

3.2.4. Utilisation d’un modèle dans les controller

Vous devez l’instancier

<?php
    /**
    * @param $id
    */
    public function get($id){
        //Instanciation du model
        $tdb = new TestDB();

        $data['test'] = $tdb->getTest($id);

        return $this->view->load("test/get", $data);
    }
?>