请问为什么自己定义的服务提供者要绑定接口全名 laravel的框架却没这样?
大家好,我有个疑惑。自己定义的服务提供者如果绑定接口,需要写接口全名,(比如我在App\Contracts目录下定义了一个叫做 Myinterface 的接口,然后在 App\Services 目录下定义一个继承了该接口的类叫做 MytestService。然后我定义一个服务提供者,在 register 方法里面绑定时必须要这样写才行 $this->app->bind('App\Contracts\Myinterface',function(){return new MytestService;}))这样才能在控制器构造函数中进行依赖注入。而我发现laravel的服务提供者里面的register方法不是这样些接口名的。比如session、cookie、files等等,都是这样写 $this->app->bind('cookie', function(){ }) . $this->app->bind('session', function(){ } . 这是绑定接口了吗?如果没绑定,那为什么还能在控制器里面用这些类的契约?有点不明白。为什么我的服务提供者就不能这样写:$this->app->bind('Myinterface',function(){})
1 Comment
Laravel是为接口设置了别名,别名与接口全名一一对应,最终执行的时候还是接口全名