我在哪里准确指定我的绑定?我似乎可以在这些文件中做到这一点。
配置/ app.php
在'providers' =>
应用/提供者/ AppServiceProvider.php
在register()
答案 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',
],