Bonnes pratiques

Introduction

Je vous fournis ici des bonnes pratiques pour utiliser ce framework.

Nommage des variables

Php est un langage au typage dynamique, mais il est pratique de connaitre le type d'une variable lorsqu'on l'utilise.
Préfixez celle-ci d'une lettre pour indiquer celui-ci:
- i "integer", pour un nombre
- o "object", pour un objet
- t "table", pour un tableau (certains préfèrent a pour array)
- s "string", pour une chaine de caractères
- u "undefined", quand vous attendez plusieurs types pour cette variable

Traitement d'un formulaire

Lorsque vous traitez un formulaire, vous pouvez mettre dans votre action le code comme ceci:
Je préconise de séparer l'action du traitement du formulaire

  
public function _new(){
  
   
//traitement du formulaire
   $tMessage=$this->processSave();
  
   $oAuteur
=new row_Auteur();
  
   $oView
=new _view('auteur::new');
   $oView->oAuteur=$oAuteur;
   $oView->tId=model_auteur::getInstance()->getIdTab();
  
   $oPluginXsrf
=new plugin_xsrf();
   $oView->token=$oPluginXsrf->getToken();
   $oView->tMessage=$tMessage;
  
   $this
->oLayout->add('main',$oView);
  
}
public function 
_edit(){
  
   
//traitement du formulaire
   $tMessage=$this->processSave();
  
   $oAuteur
=model_auteur::getInstance()->findById_root::getParam('id') );
  
   $oView
=new _view('auteur::edit');
   $oView->oAuteur=$oAuteur;
   $oView->tId=model_auteur::getInstance()->getIdTab();
  
   $oPluginXsrf
=new plugin_xsrf();
   $oView->token=$oPluginXsrf->getToken();
   $oView->tMessage=$tMessage;
  
   $this
->oLayout->add('main',$oView);
  
}
private function 
processSave(){
   if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
       return null;
   }
  
   
//verification du token (pour eviter les failles xsrf)
   $oPluginXsrf=new plugin_xsrf();
   if(!$oPluginXsrf->checkToken_root::getParam('token') ) ){ //on verifie que le token est valide
       return array('token'=>$oPluginXsrf->getMessage() );
   }

  
   $iId
=_root::getParam('id',null);
   if($iId==null){
       $oAuteur=new row_auteur  
   
}else{
       $oAuteur=model_auteur::getInstance()->findById_root::getParam('id',null) );
   }
  
   $tColumn
=array('nom','prenom');
   foreach($tColumn as $sColumn){
       $oAuteur->$sColumn=_root::getParam($sColumn,null) ;
   }
  
   
if($oAuteur->save()){
       //une fois enregistre on redirige (vers la page liste)
       _root::redirect('auteur::list');
   }else{
       return $oAuteur->getListError();
   }
  
}

    


Ceci pour plusieurs raisons:
1. on peut réutiliser la méthode processSave pour l'action d'édition et d'ajout (DRY: Don't Repeat Yourself)
2. le code est plus lisible
3. la maintenance est simplifiée