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的字符串用法小结
Jun 08 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
php防注入及开发安全详细解析
Aug 09 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
PHP类的反射用法实例
Nov 03 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
php如何把表单内容提交到数据库
Jul 08 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
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python实现翻转数组功能示例
2018/01/12 Python
python实现猜数字小游戏
2020/03/24 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
python 函数中的参数类型
2020/02/11 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
法律专业个人实习自我鉴定
2013/09/23 职场文书
25岁生日感言
2014/01/13 职场文书
物业经理自我鉴定
2014/03/03 职场文书
企业工会工作总结2015
2015/05/13 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript
Python+pyaudio实现音频控制示例详解
2022/07/23 Python