paths = $paths; $this->aliases = $aliases; } /** * Load the file for a given class. * * @param string $class * @return void */ public function load($class) { // All Laravel core classes follow a namespace to directory convention. So, we will // replace all of the namespace slashes with directory slashes. $file = strtolower(str_replace('\\', '/', $class)); // First, we'll check to determine if an alias exists. If it does, we will define the // alias and bail out. Aliases are defined for most developer used core classes. if (array_key_exists($class, $this->aliases)) return class_alias($this->aliases[$class], $class); foreach ($this->paths as $path) { if (file_exists($path = $path.$file.EXT)) { require_once $path; return; } } } /** * Register a class alias with the auto-loader. * * Note: Aliases are lazy-loaded, so the aliased class will not be included until it is needed. * * * // Register an alias for the "SwiftMailer\Transport" class * Loader::alias('Transport', 'SwiftMailer\\Transport'); * * * @param string $alias * @param string $class * @return void */ public function alias($alias, $class) { $this->aliases[$alias] = $class; } /** * Register a path with the auto-loader. * * The registered path will be searched when auto-loading classes. * * * // Register a path to be searched by the auto-loader * Loader::path('path/to/files'); * * * @param string $path * @return void */ public function path($path) { $this->paths[] = rtrim($path, '/').'/'; } /** * Remove an alias from the auto-loader's alias registrations. * * * // Remove the "Transport" alias from the registered aliases * Loader::forget_alias('Transport'); * * * @param string $alias * @return void */ public function forget_alias($alias) { unset($this->aliases[$alias]); } }