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设计模式 Delegation(委托模式)
Jun 26 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
php防止sql注入的方法详解
Feb 20 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 PHP
php数组指针函数功能及用法示例
Feb 11 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
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python中的列表推导浅析
2014/04/26 Python
Python列表切片操作实例总结
2019/02/19 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
python实现计算器简易版
2020/12/17 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
临床医学专业学生的自我评价分享
2013/11/21 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
怒海潜将观后感
2015/06/11 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
初中英语教学随笔
2015/08/15 职场文书
化工生产实习心得体会
2016/01/22 职场文书
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA