54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace Complex; | ||
|  | 
 | ||
|  | /** | ||
|  |  * | ||
|  |  * Autoloader for Complex classes | ||
|  |  * | ||
|  |  * @package Complex | ||
|  |  * @copyright  Copyright (c) 2014 Mark Baker (https://github.com/MarkBaker/PHPComplex) | ||
|  |  * @license    https://opensource.org/licenses/MIT          MIT | ||
|  |  */ | ||
|  | class Autoloader | ||
|  | { | ||
|  |     /** | ||
|  |      * Register the Autoloader with SPL | ||
|  |      * | ||
|  |      */ | ||
|  |     public static function Register() | ||
|  |     { | ||
|  |         if (function_exists('__autoload')) { | ||
|  |             //    Register any existing autoloader function with SPL, so we don't get any clashes
 | ||
|  |             spl_autoload_register('__autoload'); | ||
|  |         } | ||
|  |         //    Register ourselves with SPL
 | ||
|  |         return spl_autoload_register(['Complex\\Autoloader', 'Load']); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Autoload a class identified by name | ||
|  |      * | ||
|  |      * @param    string    $pClassName    Name of the object to load | ||
|  |      */ | ||
|  |     public static function Load($pClassName) | ||
|  |     { | ||
|  |         if ((class_exists($pClassName, false)) || (strpos($pClassName, 'Complex\\') !== 0)) { | ||
|  |             // Either already loaded, or not a Complex class request
 | ||
|  |             return false; | ||
|  |         } | ||
|  | 
 | ||
|  |         $pClassFilePath = __DIR__ . DIRECTORY_SEPARATOR . | ||
|  |                           'src' . DIRECTORY_SEPARATOR . | ||
|  |                           str_replace(['Complex\\', '\\'], ['', '/'], $pClassName) . | ||
|  |                           '.php'; | ||
|  | 
 | ||
|  |         if ((file_exists($pClassFilePath) === false) || (is_readable($pClassFilePath) === false)) { | ||
|  |             // Can't load
 | ||
|  |             return false; | ||
|  |         } | ||
|  |         require($pClassFilePath); | ||
|  |     } | ||
|  | } |