Eléphant du PHP |
79 Messages
28 juin 2013, 22:30
Bonjour,
Voici mon script qui se trouve dans mon index et en tout premier lieu.
// -----------------------------------------------------------------------------
// AUTOLOADER DEFAULT ;
define( 'PATH_ROOT', $_SERVER['DOCUMENT_ROOT'] );
$includes = array(
PATH_ROOT,
PATH_ROOT.'/bin',
);
set_include_path( implode( PATH_SEPARATOR, $includes ) );
include_once 'loader.php' ;
spl_autoload_register( array( 'loader', '_class' ) );
Tu peux remplacer le $_SERVER['DOCUMENT_ROOT'] par dirname( __FILE__ ) si tu n'as pas configurer de vhost.
La classe qui est rattaché à l'autoloader et qui est à placer dans un dossier "bin".
class loader
{
public static function _class( $class_name, $dirs = null )
{
$filename = str_replace( '_', DIRECTORY_SEPARATOR, "$class_name.php" );
if( !is_null( $dirs ) )
{
$dirs .= DIRECTORY_SEPARATOR . dirname( $filename );
self::_file( basename( $filename ), $dirs, true );
}
else
{
self::_file( $filename, null, true );
}
$result = false ;
if( class_exists( $class_name, false ) or interface_exists( $class_name, false ) )
{
$result = true ;
}
return $result ;
}
public static function _file( $filename, $dirs = null, $once = false )
{
$includes = false ;
if( !is_null( $dirs ) )
{
$includes = get_include_path();
set_include_path( PATH_ROOT . DIRECTORY_SEPARATOR . $dirs );
}
if( $once )
{
include_once $filename ;
}
else
{
include $filename ;
}
if( $includes )
{
set_include_path( $includes );
}
}
}
Comprend bien qu'avec ce système la nomenclature de tes classes doivent suivre l’arborescence dans la quelles elles sont incluses.
Ciao