20,9 → 20,6 |
/** Le nom du widget demandé. */ |
private $widget = null; |
|
/** Les chemins où l'autoload doit chercher des classes. */ |
private static $autoload_chemins = array(); |
|
/** Les paramètres de l'url $_GET nettoyés. */ |
private $parametres = null; |
|
48,19 → 45,16 |
// Gestion des erreurs |
error_reporting(self::$config['parametres']['erreurNiveau']); |
|
// Enregistrement de la méthode gérant l'autoload des classes |
spl_autoload_register(array('Widget', 'chargerClasse')); |
|
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['QUERY_STRING'])) { |
$url_morceaux = $this->parserUrl(); |
if (isset($url_morceaux[0])) { |
$this->widget = $url_morceaux[0]; |
self::$config['chemins']['widgetCourantDossier'] = self::$config['chemins']['widgetsDossier'].strtolower($this->widget).DIRECTORY_SEPARATOR; |
$this->chargerWidgetConfig(); |
} |
// Chargement des chemins pour l'autoload |
$this->chargerCheminAutoload(); |
|
// Enregistrement de la méthode gérant l'autoload des classes |
spl_autoload_register(array('Widget', 'chargerClasse')); |
|
// Nettoyage du $_GET (sécurité) |
$this->collecterParametres(); |
} else { |
94,19 → 88,6 |
} |
} |
|
private function chargerCheminAutoload() { |
$chemins_communs = explode(';', self::$config['chemins']['autoload']); |
$chemins_communs = array_map('trim', $chemins_communs); |
array_unshift($chemins_communs, ''); |
|
$chemins_widget = explode(';', self::$config[$this->widget]['autoload']); |
foreach ($chemins_widget as $cle => $chemin) { |
$chemins_widget[$cle] = self::$config['chemins']['widgetCourantDossier'].trim($chemin); |
} |
|
self::$autoload_chemins = array_merge($chemins_communs, $chemins_widget); |
} |
|
/** |
* La méthode chargerClasse() charge dynamiquement les classes trouvées dans le code. |
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code. |
118,7 → 99,12 |
if (class_exists($classe)) { |
return null; |
} |
foreach (self::$autoload_chemins as $chemin) { |
$chemins = explode(';', self::$config['chemins']['autoload']); |
$chemins = array_map('trim', $chemins); |
array_unshift($chemins, self::$config['chemins']['widgetCourantDossier'].'bibliotheque'.DIRECTORY_SEPARATOR); |
array_unshift($chemins, ''); |
|
foreach ($chemins as $chemin) { |
$chemin = $chemin.$classe.'.php'; |
if (file_exists($chemin)) { |
require_once $chemin; |
135,6 → 121,8 |
$classe_widget = ucfirst($this->widget); |
$fichier_widget = self::$config['chemins']['widgetCourantDossier'].$classe_widget.'.php'; |
if (file_exists($fichier_widget)) { |
$this->chargerWidgetConfig(); |
|
include_once $fichier_widget; |
if (class_exists($classe_widget)) { |
$widget = new $classe_widget(self::$config, $this->parametres); |