laravel alias getAlias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * 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' 这种形式的

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * 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”

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

如果定了了就返回定义值

这样理解要方便一些