/**
* 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”
如果没有定义值就返回自己
如果定了了就返回定义值
这样理解要方便一些