/** * Get the alias for an abstract if available. * * @param string $abstract * @return string * * @throws \LogicException */ public function getAlias($abstract) { if (! isset($this->aliases[$abstract])) { return $abstract; } if ($this->aliases[$abstract] === $abstract) { throw new LogicException("[{$abstract}] is aliased to itself."); } return $this->getAlias($this->aliases[$abstract]); }
laravel这个function 开始看的时候真的挺坑的
因为这个参数$abstract 命名实在是挺误导的
$aliases在赋值的时候是"Illuminate\Foundation\Application"=> 'app' 这种形式的
/** * Alias a type to a different name. * * @param string $abstract * @param string $alias * @return void */ public function alias($abstract, $alias) { $this->aliases[$alias] = $abstract; $this->abstractAliases[$abstract][] = $alias; }
在function alias里app是$abstract, Illuminate\Foundation\Application是$alias
而在getAlias里参数是$abstract就很误导
getAlias传入的$abstract其实是“Illuminate\Foundation\Application”
如果没有定义值就返回自己
如果定了了就返回定义值
这样理解要方便一些