您的位置:首页 > 编程学习 > > 正文

laravel接口请求模拟(Laravel 类和接口注入相关的代码)

更多 时间:2021-10-05 00:09:34 类别:编程学习 浏览量:2676

laravel接口请求模拟

Laravel 类和接口注入相关的代码

Laravel能够自动注入需要的依赖,对于自定义的类和接口是有些不同的。

对于类,Laravel可以自动注入,但是接口的话需要创建相应的ServiceProvider注册接口和实现类的绑定,同时需要将ServiceProvider添加到congif/app.php的providers数组中,这样容器就能知道你需要注入哪个实现。

现在自定义一个类myClass

namespace App\library;

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • class myClass {
  •  
  •  public function show() {
  •   echo __FUNCTION__.' Hello World';
  •  }
  • }
  • 设置route

  • ?
  • 1
  • Route::get('test/ioc', 'TestController@index');
  • 修改TestController

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • class TestController extends Controller
  • {
  •  public function index(myClass $myClass) {
  •   $myClass->show();
  •  }
  • }
  • 访问http://localhost/test/ioc,能成功打印show Hello World。

    修改myClass

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • class myClass implements like {
  •  
  •  public function play() {
  •   // TODO: Implement play() method.
  •   echo __FUNCTION__.' Hello Play';
  •  }
  • }
  • like接口

  • ?
  • 1
  • 2
  • 3
  • interface like {
  •  public function play();
  • }
  • TestController

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • class TestController extends Controller
  • {
  •  public function index(like $like) {
  •   $like->play();
  •  }
  • }
  • 如果还是访问上面的地址,会提示错误

  • ?
  • 1
  • Target [App\library\like] is not instantiable.
  • 对于接口注入,我们需要在对应的ServiceProvider的register方法中注册,并将对应的ServiceProvider写入config/app的providers数组中。

    定义LikeServiceProvider

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • class LikeServiceProvider extends ServiceProvider
  • {
  •  public function boot()
  •  {
  •   //
  •  }
  •  public function register()
  •  {
  •   //
  •   $this->app->bind('App\library\like', 'App\library\myClass');
  •  }
  • }
  • 之后我们需要将LikeServiceProvider添加到config\app.php文件的providers数组中。

    还是继续访问上述的地址,页面成功输出play Hello Play。

    以上这篇Laravel 类和接口注入相关的代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。

    原文链接:https://blog.csdn.net/sweatOtt/article/details/55059633

    您可能感兴趣