关于LARAVEL的源码别名问题
我的问题是laravel里容器的protected aliases变量是一个数组,那么到底其KEY是别名还是VALUE是别名呢?
我看源码是互有冲突:
public function isAlias($name)
{
return isset($this->aliases[$name]);
}
isAlias函数表明:key为别名,value为抽象($abstract)(因为此函数只判断key)
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]);
}
getAlias函数表明:value为别名,key为抽象abstract(因为此函数最终返回value)
请问该如何理解?求大神指点。
另外我打印了这个数组:
以及config文件里的别名配置:
2 Comments
没毛病,以Cache为例,解析的顺序是
Cache -> Illuminate\Support\Facades\Cache::class -> 'cache' -> Cache的具体实现类
,再把底层代码好好捋捋,你需要弄清楚上面两张截图的映射含义是不一样的,第一张是接口/具体类与对应实现类绑定到服务容器中的别名的映射,第二张是Facade别名与完整Facade类的映射,不是一个意思学院大神,再追问一下。 public function isAlias($name)
容器里的这个函数表明key是别名,也就是对应的具体实现类或者契约为别名。可按照我理解你的意思是value为别名。那这个函数是否命名有问题呢?应该是isAbstract()?