困惑 - AppServiceProvider.php与app.php

时间:2015-05-21 13:56:40

标签: laravel laravel-5 service-provider

我在哪里准确指定我的绑定?我似乎可以在这些文件中做到这一点。

配置/ app.php 'providers' =>

应用/提供者/ AppServiceProvider.php register()

2 个答案:

答案 0 :(得分:3)

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

AppServiceProvider用于您已覆盖(或实际指定)的特定于Laravel的服务,例如Illuminate\Contracts\Auth\Registrar,HTTP /控制台内核以及您希望在Laravel中覆盖的任何内容。这是一个服务提供程序,它注册您指定的容器绑定。

真的,你可以在这里加载你想要的任何东西,但是app/Providers目录中有一堆现成的服务提供商,所以你不必去做一个人。

答案 1 :(得分:2)

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

应用程序/提供者/ 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'
    );
 }
}

配置/ app.php

'providers' => [
// Other Service Providers

'App\Providers\MyNewClassServiceProvider',
],