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.
- 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{
}
- 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