projet-php/autoloader.php

35 lines
1.2 KiB
PHP
Executable File

<?php
/*
* fonction d'autoloading : prend en paramètre le nom de la classe et s'occupe d'inclure les fichiers correspondant aux classes
*/
//pour l'inclusion dans le dossier src
$GLOBALS['managers_dir'] = dirname(__FILE__).DIRECTORY_SEPARATOR.'src';
function autoloader($class) {
//si on charge le StaticRepo
if(strpos($class, 'StaticRepo') !== FALSE){
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'repositories'.DIRECTORY_SEPARATOR.$class . '.php';
}
//si on charge un repos
elseif(strpos($class, 'Repo') !== FALSE){
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'repositories'.DIRECTORY_SEPARATOR.'repos'.DIRECTORY_SEPARATOR.$class . '.php';
//cas particuliers pas identifiable par nom de classe
}else{
//si on charge un manager
if(is_file(dirname(__FILE__).DIRECTORY_SEPARATOR.'src'.DIRECTORY_SEPARATOR.$class . '.php')){
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'src'.DIRECTORY_SEPARATOR.$class . '.php';
}
}
}
//enregistrememnt de la fonction tout en bas de la pile pour ne pas casser l'autoloader de phpUnit
spl_autoload_register('autoloader',false,true);
?>