困惑 - AppServiceProvider.php与app.php

use*_*986 6 service-provider laravel laravel-5

我在哪里准确指定我的绑定?我似乎可以在这些文件中的任何一个中执行此操作.

config/app.php 里面'providers' =>

app/Providers/AppServiceProvider.php 里面register()

Ame*_*lia 7

服务提供者数组通过 加载config/app.php。这是提供商注册的唯一实际位置,也是您应该放置Service Providers 的位置。

AppServiceProvider适用于您已覆盖(或实际指定)的 Laravel 特定服务,例如Illuminate\Contracts\Auth\RegistrarHTTP/Console 内核以及您希望在 Laravel 中覆盖的任何内容。这是一个单一服务提供者,用于注册您指定的容器绑定。

实际上,您可以在这里加载任何您想要的内容,但是目录中有一堆现成的服务提供商可供app/Providers您使用,因此您不必自己去制作一个。


mar*_*nuy 3

如果您的绑定与App无关,那么我将创建一个新的 ServiceProvider 类,在其中用新绑定覆盖register方法,然后您必须让 Laravel 知道该类在您的config/app.php中注册为 Provider提供商列表,即:

应用程序/Providers/MyNewClassServiceProvider.php

<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class MyNewClassServiceProvider extends ServiceProvider {
 public function register()
 {
    $this->app->bind(
        'App\Repository\MyNewClassInterface',
        'App\Repository\MyNewClassRepository'
    );
 }
}
Run Code Online (Sandbox Code Playgroud)

配置/应用程序.php

'providers' => [
// Other Service Providers

'App\Providers\MyNewClassServiceProvider',
],
Run Code Online (Sandbox Code Playgroud)