Auto chargement des classes

De TheliaDoc
Aller à : navigation, rechercher

A partir de la version 1.5.3.3 il n'est plus nécessaire d'inclure les classes dans les fichiers où on les utilise.

Typiquement, il n'est plus nécessaire dans un plugin d'inclure le fichier PluginsClassiques.class.php

Avant Thelia 1.5.3.3 la déclaration d'un plugin se faisait comme suit :

include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");

class MonPlugin extends PluginsClassiques {

}

A partir de Thelia 1.5.3.3 la déclaration d'un plugin se fera de la manière suivante :

class MonPlugin extends PluginsClassiques {

}

L'autoloader va chercher de base dans les répertoires suivants :

  • /classes/
  • /classes/actions/
  • /classes/filtres/
  • /classes/parseur/
  • /classes/tlog/
  • /classes/tlog/destinations

si vous souhaitez dans votre plugin rajouter des dossiers dans lesquels vous avez placé vos propres classes, par exemple dans le répertoire classes du plugin :

Autoload::getInstance()->addDirectory(__DIR__ . "/classes/");

ou bien si il y a plusieurs dossiers : 

Autoload::getInstance()->addDirectories(array('répartoire1', 'répertoire2'));

class MonPlugin extends PluginsClassiques {

}

La classe Autoload autorise à chainer les appels aux méthodes getInstance, addDirectory et addDirectories. Il est donc possible de réaliser le code suivant :

Autoload::getInstance()->addDirectory("...")->addDirectories(array("...","..."))->addDirectory('...');

ATTENTION

Si vous souhaitez que vos plugins restent compatibles avec les versions inférieur à Thelia 1.5.3.3 vous devez continuer à inclure les classes dont vous vous servez comme c'est le cas actuellement