diff --git a/laravel/autoloader.php b/laravel/autoloader.php index 106bc825f..c1c74672f 100644 --- a/laravel/autoloader.php +++ b/laravel/autoloader.php @@ -7,14 +7,14 @@ class Autoloader { * * @var array */ - protected static $libraries = array(); + protected $libraries = array(); /** * The paths to be searched by the auto-loader. * * @var array */ - protected static $paths = array(BASE_PATH, MODEL_PATH, LIBRARY_PATH); + protected $paths = array(BASE_PATH, MODEL_PATH, LIBRARY_PATH); /** * Load the file corresponding to a given class. @@ -22,7 +22,7 @@ class Autoloader { * @param string $class * @return void */ - public static function load($class) + public function load($class) { // Most of the core classes are aliases for convenient access in spite of // the namespace. If an alias is defined for the class, we will load the @@ -32,6 +32,22 @@ class Autoloader { return class_alias(Config::$items['application']['aliases'][$class], $class); } + if ( ! is_null($path = $this->find($class))) + { + require $path; + + $this->mappings[$class] = $path; + } + } + + /** + * Find the file associated with a given class name. + * + * @param string $class + * @return string + */ + protected function find($class) + { $file = str_replace('\\', '/', $class); $namespace = substr($class, 0, strpos($class, '\\')); @@ -40,18 +56,16 @@ class Autoloader { // library is PSR-0 compliant, and we will load it following those standards. // This allows us to add many third-party libraries to an application and be // able to auto-load them automatically. - if (array_key_exists($namespace, static::$libraries)) + if (array_key_exists($namespace, $this->libraries)) { - require LIBRARY_PATH.str_replace('_', '/', $file); + return LIBRARY_PATH.str_replace('_', '/', $file); } - foreach (static::$paths as $path) + foreach ($this->paths as $path) { if (file_exists($path = $path.strtolower($file).EXT)) { - require $path; - - return; + return $path; } } @@ -60,9 +74,9 @@ class Autoloader { // libraries and load the class accordingly. if (is_dir(LIBRARY_PATH.$namespace)) { - static::$libraries[] = $namespace; + $this->libraries[] = $namespace; - require LIBRARY_PATH.str_replace('_', '/', $file); + return LIBRARY_PATH.str_replace('_', '/', $file); } } diff --git a/laravel/bootstrap/core.php b/laravel/bootstrap/core.php index ab43bc941..56e489a99 100644 --- a/laravel/bootstrap/core.php +++ b/laravel/bootstrap/core.php @@ -14,7 +14,9 @@ Config::load('session'); IoC::bootstrap(); -spl_autoload_register(array('Laravel\\Autoloader', 'load')); +$loader = new Autoloader; + +spl_autoload_register(array($loader, 'load')); function e($value) { diff --git a/laravel/cache/manager.php b/laravel/cache/manager.php index 1c88a8fc8..d623d41e8 100644 --- a/laravel/cache/manager.php +++ b/laravel/cache/manager.php @@ -1,4 +1,4 @@ -