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