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


Posted in PHP onOctober 15, 2019

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

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

现在自定义一个类myClass

namespace App\library;

class myClass {

 public function show() {
  echo __FUNCTION__.' Hello World';
 }
}

设置route

Route::get('test/ioc', 'TestController@index');

修改TestController

class TestController extends Controller
{
 public function index(myClass $myClass) {
  $myClass->show();
 }
}

访问http://localhost/test/ioc,能成功打印show Hello World。

修改myClass

class myClass implements like {

 public function play() {
  // TODO: Implement play() method.
  echo __FUNCTION__.' Hello Play';
 }
}

like接口

interface like {
 public function play();
}

TestController

class TestController extends Controller
{
 public function index(like $like) {
  $like->play();
 }
}

如果还是访问上面的地址,会提示错误

Target [App\library\like] is not instantiable.

对于接口注入,我们需要在对应的ServiceProvider的register方法中注册,并将对应的ServiceProvider写入config/app的providers数组中。

定义LikeServiceProvider

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 类和接口注入相关的代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
php设计模式之命令模式的应用详解
May 21 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
php版淘宝网查询商品接口代码示例
Jun 17 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP 类与构造函数解析
Feb 06 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 PHP
在PHP中实现使用Guzzle执行POST和GET请求
Oct 15 #PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 #PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 #PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 #PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 #PHP
浅谈PHP array_search 和 in_array 函数效率问题
Oct 15 #PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 #PHP
You might like
thinkphp缓存技术详解
2014/12/09 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
PHP Cookie学习笔记
2016/08/23 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Django 连接sql server数据库的方法
2018/06/30 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
数学专业毕业生自荐信
2013/11/10 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
预备党员政审材料
2014/02/04 职场文书
岗位工作说明书
2014/07/29 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
高中生物教学反思
2016/02/20 职场文书
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis
Python字符串的转义字符
2022/04/07 Python