Ceci est une ancienne révision du document !
Astuces
- Helpers
Création d'un contrôleur de base personnalisé et Extension de CI_Controller
Le contrôleur de base de codeIgniter correspond à la classe CI_Controller localisée dans system/core.
Classe dérivée
class BaseCtrl extends \CI_Controller{ public function __construct(){ // TODO Auto-generated method stub parent::__construct(); } }
Modification de config.php
Il est nécessaire de modifier le fichier config.php pour que la classe BaseCtrl soit automatiquement chargée au lancement de l'application :
Ajouter le code suivant à la fin de config.php, en utilisant la fonction php _autoload()
//Fin de config.php function __autoload($class){ if(strpos($class, 'CI_') !== 0){ $paths = array(APPPATH . 'core/', APPPATH . 'controllers/'); foreach($paths as $path){ if (file_exists($path . $class . EXT)){ @include_once( $path . $class . EXT ); break; } } } }
Contrôleur personnalisé et complétion de code
L’inconvénient majeur de php est l'absence de typage des variables, combiné dans le cas présent au fonctionnement même de codeIgniter, les 2 réunis font qu'aucune complétion n'est présente par défaut sur les principaux objets accessibles depuis un contrôleur :
- les librairies chargées (doctrine, jsutils…)
- le loader load, l'objet ci…
Pour remédier à ce manque et avoir l’auto-complétion Eclipse sur ces objets utilisés fréquemment, il suffit de surcharger CI_Controller, de définir explicitement les membres de données existants, et de les commenter en style javadoc.
Eclipse utilisera les commentaires de type @var pour proposer l’auto-complétion sur les membres concernés.
<?php class BaseCtrl extends \CI_Controller{ /** * @var CI_JsUtils */ private $jsutils; /** * @var CI_Base */ private $CI; /** * @var Doctrine */ private $doctrine; /** * @var CI_Loader */ private $load; public function __construct(){ // TODO Auto-generated method stub parent::__construct(); } }