Nous ne répondons seulement qu'aux sujets dont l'auteur a complété sa signature [Lire]



Vous avez des soucis avec votre Opencart v1.5.x, nous pouvons résoudre vos problèmes,
contactez le Bureau France !

par tel: 0 891 690 175 ou par
email

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
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 12
Inscription: 01 Avr 2010, 08:00

Retourner vers Développement

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron