Class Loader (amélioration)

Programmation, discussions et suggestions pour l'amélioration de OpenCart

Class Loader (amélioration)

Messagepar acidline » 07 Avr 2010, 08:48

Bonjour à tous,

Un truc tout bête du Mercredi matin ...

Pour des besoin persos je me suis rajouter cette méthode dans la classe system/engine/loader.php, j'aimais bien comment c'était fait avant ! (pour les nostalgiques)

Code: Tout sélectionner
   public function external($external, $instance = true) {
      $file = DIR_SYSTEM . 'external/' . $external . '.php';
      $class = str_replace("class_", '', $external);
      
      if (file_exists($file)) {
         include_once($file);
         
         if($instance) {
            Registry::set($class, new $class());
         }
         
      } else {
         exit('Error: Could not load external ' . $external . '!');
      }
   }


En gros vous devez créer un répertoire system/external

Ensuite vous mettez vos classes dedans, puis dans vos controller, vos models ou autres vous faites un truc du genre :

$this->load->external('ma_classe'); // instanciation directe
$this->load->external('ma_classe', false); // simple inclusion

Si vous ne mettez pas le second arguments à la méthode, la classe est automatiquement instanciée, sinon en passant à false, le travail doit être fait à la mano !!! (utile si vous utiliser une classe avec des données "persistantes" construite dès le constructeur Ex: Gmap, Twitter etc... et oui on va balancer une bonne fois pour toutes les clés d'accès dès l'instanciation ! )

Bref, c'est pas grand chose mais bon ... ;)

Nico

ps: j'ouvre le débat sur les "Espaces de Noms"
Avatar de l’utilisateur
acidline
 
Messages: 13
Inscrit le: 01 Avr 2010, 08:00

Retour vers Développement

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 0 invité(s)

cron
Copyright © 2009-2013 OpenCart France - Tous droits réservés