困惑 - AppServiceProvider.php 与 app.php

Confused - AppServiceProvider.php versus app.php

我在哪里可以准确指定我的绑定?看来我可以在这些文件中的任何一个中完成。

config/app.php 'providers' =>

里面

app/Providers/AppServiceProvider.php register()

里面

如果您的绑定与 App 无关,那么我将创建一个新的 ServiceProvider class,并在其中覆盖 register 方法,然后你必须让 Laravel 知道这个 class 在你的 config/app.php[= 中注册为提供者22=]供应商列表,即:

app/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'
    );
 }
}

config/app.php

'providers' => [
// Other Service Providers

'App\Providers\MyNewClassServiceProvider',
],

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

的地方

AppServiceProvider 用于您已覆盖(或实际指定)的 Laravel-特定服务,例如 Illuminate\Contracts\Auth\Registrar、HTTP/Console 内核等您希望在 Laravel 中覆盖。这是一个 单一 服务提供商,它注册您指定的容器绑定。

确实,您可以在此处加载任何您想要的内容,但 app/Providers 目录中有大量现成的服务提供程序供您使用,因此您不必自己制作一个。