相关疑难解决方法(0)

Laravel-Core:为什么Laravel多次存储别名?

Laravel在Application.php的核心注册了很多默认实现,如下所示:

'url' => ['Illuminate\Routing\UrlGenerator', 'Illuminate\Contracts\Routing\UrlGenerator'],
Run Code Online (Sandbox Code Playgroud)

这将有效地将下面的方法称为两次

public function alias($abstract, $alias)
    {
        $this->aliases[$alias] = $abstract;
    }
Run Code Online (Sandbox Code Playgroud)

导致以下值Container->aliases:

"Illuminate\Routing\UrlGenerator" => "url"
"Illuminate\Contracts\Routing\UrlGenerator" => "url"
Run Code Online (Sandbox Code Playgroud)

如果我稍后调用: $this->app->alias('url', 'App\Util\Portal\UrlGenerator'); 它甚至将它存储在Container的别名数组中:

"App\Util\Portal\UrlGenerator" => "url" 
Run Code Online (Sandbox Code Playgroud)

我的问题:

为什么laravel将它们全部存储两到三个而不是覆盖它们?存储具体类应该足够了.但是为什么laravel会将它们全部存储起来?当我现在使用App :: make('url')时,laravel如何判断哪一个要解决?Laravel现在有三个可供选择,一个接口和两个实现.

php ioc-container laravel

7
推荐指数
1
解决办法
863
查看次数

标签 统计

ioc-container ×1

laravel ×1

php ×1