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 相关文章推荐
解析php中如何直接执行SHELL
Jun 28 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
浅谈php和.net的区别
Sep 28 PHP
PHP导入导出Excel代码
Jul 07 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 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
Terran历史背景
2020/03/14 星际争霸
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
php页面缓存方法小结
2015/01/10 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
pygame播放音乐的方法
2015/05/19 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
Python给图像添加噪声具体操作
2019/03/03 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
汉语专业应届生求职信
2013/10/01 职场文书
小学教师岗位职责
2013/11/25 职场文书
供货协议书
2014/04/22 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
欢迎新生标语2015
2015/07/16 职场文书