laravel robi w swoim rdzeniu w Application.php zarejestrować wiele wdrożeń domyślne tak:Laravel-Core: Dlaczego Laravel przechowuje aliasy wiele razy?
'url' => ['Illuminate\Routing\UrlGenerator', 'Illuminate\Contracts\Routing\UrlGenerator'],
co w Effekt wywołać metodę poniżej dwa razy
public function alias($abstract, $alias)
{
$this->aliases[$alias] = $abstract;
}
skutkuje następującymi wartościami w Container->aliases
:
"Illuminate\Routing\UrlGenerator" => "url"
"Illuminate\Contracts\Routing\UrlGenerator" => "url"
Gdybym później zadzwonić: $this->app->alias('url', 'App\Util\Portal\UrlGenerator');
nawet sklepy on Thrid czas w pojemniku im tablicę alias:
"App\Util\Portal\UrlGenerator" => "url"
Moje pytanie:
Dlaczego laravel przechowywać je wszystkie dwa lub trzy, a nie je zastąpić? Powinno wystarczyć do przechowywania klasy betonu. Ale dlaczego laravel przechowuje je wszystkie trzy? W jaki sposób laravel może powiedzieć, który z nich rozwiązać, kiedy teraz używam App :: make ("url")? Laravel ma teraz trzy opcje do wyboru, jeden interfejs i dwie implementacje.
Myślałem o tym przez wiele dni ... właśnie zobaczyłem ten post. Dziękuję bardzo, jesteś świetny! –