Created
October 11, 2017 15:27
-
-
Save darkterminal/ec57a9497acf35d6edd0ed4a94d200e3 to your computer and use it in GitHub Desktop.
Illuminate\Support\ClassLoader
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Illuminate\Support; | |
class ClassLoader { | |
/** | |
* The registered directories. | |
* | |
* @var array | |
*/ | |
protected static $directories = array(); | |
/** | |
* Indicates if a ClassLoader has been registered. | |
* | |
* @var bool | |
*/ | |
protected static $registered = false; | |
/** | |
* Load the given class file. | |
* | |
* @param string $class | |
* @return bool | |
*/ | |
public static function load($class) | |
{ | |
$class = static::normalizeClass($class); | |
foreach (static::$directories as $directory) | |
{ | |
if (file_exists($path = $directory.DIRECTORY_SEPARATOR.$class)) | |
{ | |
require_once $path; | |
return true; | |
} | |
} | |
return false; | |
} | |
/** | |
* Get the normal file name for a class. | |
* | |
* @param string $class | |
* @return string | |
*/ | |
public static function normalizeClass($class) | |
{ | |
if ($class[0] == '\\') $class = substr($class, 1); | |
return str_replace(array('\\', '_'), DIRECTORY_SEPARATOR, $class).'.php'; | |
} | |
/** | |
* Register the given class loader on the auto-loader stack. | |
* | |
* @return void | |
*/ | |
public static function register() | |
{ | |
if ( ! static::$registered) | |
{ | |
static::$registered = spl_autoload_register(array('\Illuminate\Support\ClassLoader', 'load')); | |
} | |
} | |
/** | |
* Add directories to the class loader. | |
* | |
* @param string|array $directories | |
* @return void | |
*/ | |
public static function addDirectories($directories) | |
{ | |
static::$directories = array_unique(array_merge(static::$directories, (array) $directories)); | |
} | |
/** | |
* Remove directories from the class loader. | |
* | |
* @param string|array $directories | |
* @return void | |
*/ | |
public static function removeDirectories($directories = null) | |
{ | |
if (is_null($directories)) | |
{ | |
static::$directories = array(); | |
} | |
else | |
{ | |
static::$directories = array_diff(static::$directories, (array) $directories); | |
} | |
} | |
/** | |
* Gets all the directories registered with the loader. | |
* | |
* @return array | |
*/ | |
public static function getDirectories() | |
{ | |
return static::$directories; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment