laravel alias getAlias

/**
 * 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”

如果没有定义值就返回自己

如果定了了就返回定义值

这样理解要方便一些