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);
 | 
						|
    }
 | 
						|
}
 |