Illuminate/Foundation/AliasLoader.php


<?php namespace Illuminate\Foundation;

class AliasLoader {

    
/** * The array of class aliases. * 别名数组。 * * @var array */ protected $aliases;
/** * Indicates if a loader has been registered. * 标记当前类是否已被注册。 * * @var bool */ protected $registered = false;
/** * The singleton instance of the loader. * 当前类的单例实例。 * * @var \Illuminate\Foundation\AliasLoader */ protected static $instance;
/** * Create a new AliasLoader instance. * 创建一个新的 AliasLoader 实例。 * * @param array $aliases */ private function __construct($aliases) { $this->aliases = $aliases; }
/** * Get or create the singleton alias loader instance. * 获取或创建一个 AliasLoader 单例。 * * @param array $aliases * @return \Illuminate\Foundation\AliasLoader */ public static function getInstance(array $aliases = array()) { // 首次调用直接返回当前类实例 if (is_null(static::$instance)) return static::$instance = new static($aliases); # 之后的调用中,合并存储传入的 aliases 数组,并返回此类单例 $aliases = array_merge(static::$instance->getAliases(), $aliases); static::$instance->setAliases($aliases); return static::$instance; }
/** * Load a class alias if it is registered. * * @param string $alias * @return void */ public function load($alias) { if (isset($this->aliases[$alias])) { return class_alias($this->aliases[$alias], $alias); } }
/** * Add an alias to the loader. * * @param string $class * @param string $alias * @return void */ public function alias($class, $alias) { $this->aliases[$class] = $alias; }
/** * Register the loader on the auto-loader stack. * 注册自动加载。 * * @return void */ public function register() { if ( ! $this->registered) { // 注册自动加载 $this->prependToLoaderStack(); // 标记为已注册 $this->registered = true; } }
/** * Prepend the load method to the auto-loader stack. * 注册制动加载。 * * @return void */ protected function prependToLoaderStack() { spl_autoload_register(array($this, 'load'), true, true); }
/** * Get the registered aliases. * 获取已注册的别名数组。 * * @return array */ public function getAliases() { return $this->aliases; }
/** * Set the registered aliases. * 设置已注册的别名。 * * @param array $aliases * @return void */ public function setAliases(array $aliases) { $this->aliases = $aliases; }
/** * Indicates if the loader has been registered. * * @return bool */ public function isRegistered() { return $this->registered; }
/** * Set the "registered" state of the loader. * * @param bool $value * @return void */ public function setRegistered($value) { $this->registered = $value; }
/** * Set the value of the singleton alias loader. * * @param \Illuminate\Foundation\AliasLoader $loader * @return void */ public static function setInstance($loader) { static::$instance = $loader; }
/** * Clone method. * * @return void */ private function __clone() { // } }