1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
<?php
namespace SIW;
class Autoloader {
protected $base_namespace = 'SIW';
protected $base_dir;
public function register() {
spl_autoload_register( array( $this, 'autoload' ) );
}
public function set_base_dir( string $base_dir ) {
$this->base_dir = trailingslashit( $base_dir );
}
public function autoload( string $class ) {
$path = explode( '\\', $class );
if ( ! is_array( $path ) || $this->base_namespace !== $path[0] ) {
return;
}
unset( $path[0]);
$file = $this->base_dir . implode( '/', $path ) . '.php';
$file = strtolower( str_replace( '_', '-', $file ) );
if ( file_exists( $file ) ) {
require_once $file;
return;
}
}
}