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实现MySQL更新记录的代码
Jun 07 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
kohana框架上传文件验证规则写法示例
Jul 14 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
Aug 06 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
Symfony2安装的方法(2种方法)
Feb 04 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 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
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
vue观察模式浅析
2018/09/25 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
Python3中的2to3转换工具使用示例
2015/06/12 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
python里运用私有属性和方法总结
2019/07/08 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
2014年班主任自我评价范文
2014/04/23 职场文书
电视节目策划方案
2014/05/16 职场文书
捐书倡议书
2014/08/29 职场文书
人力资源部岗位职责
2015/02/11 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
新员工辞职信范文
2015/05/12 职场文书
经典爱情感言
2015/08/03 职场文书
中学总务处工作总结
2015/08/12 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
Python中else的三种使用场景
2021/06/16 Python