Contract 的概念和背后
打赏作者

liudong0763

老师讲的真好

dope2008

我想使用 abc()->set(); 和session()->get() 一样,是怎么样做的

JellyBool 回复 dope2008

自定义 helper function,然后使用 composer 自动加载。

foxriver123 回复 dope2008

首先你需要定义一个helper function

function abc(){
   return app()->make('abc'); //或者 return app('abc'); 方法有很多。教主有讲
}

接着定义一个AbcServiceProvider的类在他的register方法里面

public function register(){
  $this->app->bind('abc',function(){
    return new Abc();
 });
}

把这个ServiceProvider加入到app里面那个ServiceProvider数组里面就可以了

foxriver123

如果类没有实现接口就没有必要绑定到容器,因为容器可以通过反射解析。laravel作者这是在强调面向接口编程的思想。也是为什么框架里有如此多的Contracts。接口在laravel里面不仅仅是一种约束,而起更重要的作用在于绑定实现到接口,这能让我们切换自由,更利于维护。