mercredi 29 novembre 2017

Gestion de Models CodeIniter avec MY_Model.php


Codeigniter MVC

Le but de ce document est de vous présentater l'architecture MVC de Codeigniter selon le framework Ruby on Rails.

Model

Le model doit pouvoir effectuer les taches suivantes :
  • Sauvegarder les données dans la base de donnée ;
  • récupérer les données de la base de donnée ;
  • valider les données ;
  • envoyer les mails ;
  • connecter au API ;
  • Etc

Pour notre implémentation, nous allons définir un ensemble de convention pour faciliter la manipulation des models.
  1. Chaque model accède à une seule table
Pour cette première règle, nous remarquons rapidement que certaines manipulations seront communes à toutes les models ; c'est par exemple l'enregistrement, la lecture, le modification et le suppression des données aux quelles notre model a accès.
Pour simplifier cette première contrainte et de ce fait éviter la répétition, nous allons suivre l’implémentation suivante :

class MY_Model extends CI_Model{

protected $_table;
/* le nom de la table est le meme que celui de la classe sans la partie _model
*/

protected $_id;
/* le nom de id de la table est celui de la table suivi de _id
*/

protected $_etat = 'status';
/* l etat 1 correspond a l etat actif et 0 (zero) etat inactif
*/
protected $_rules = array();
/*
les regle que doivent respecter les donnees pour etre valide
*/

public function __construct() {
parent::__construct();
$this->load->helper('inflector');
/*
chargement du helper 'inflector' qui contient de nombreuses fonctions permettant de manipuler les mots anglais
*/
if(!$this->_table){
$this->_table = strtolower(str_replace('Model_','', get_class($this)));
}
if(!$this->_id){
$this->_id = strtolower((str_replace('Model', 'id', get_class($this))));
}
if(!$this->_etat){
$this->_etat = strtolower((str_replace('Model', 'etat', get_class($this))));
}

if($this->config->item($this->_table)){
$this->_rules = $this->config->item($this >_table) ;
}
}

public function get(){

}

/*
Dans la fonction add il faut que la date de l'insertion soit mise automatiquement
*/
public function add(){

}



/*
Dans la fonction update il faut que la date de l'ajout soit mise automatiquement
*/
public function update(){

}


/*
delete correspond ici à la désactivation de la ligne dans la table
*/
public function delete(){

}

public function validate(){

}

public function post(){

}

}


/*
Notre model user
*/
class User_Model extends MY_Model{

}


  1. Les noms des models
les noms des models sont une concaténation entre le nom de leur table et le mot clé Model. Cette syntaxe permet de réduire le travail du programmeur dans l'écriture du code et d'automatiser facilement la manipulation des données.

class User_Model extends MY_Model{

}

Nom de la table : user
Nom de identifiant de la table : user_id
Nom de l'attribut état : user_status
Nom du model : User_Model

A télécharger : MY_Model.php à ajouter dans le dossier application/core de votre framework CodeIgniter

Aucun commentaire:

Enregistrer un commentaire