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 常用函数库和一些实用小技巧
Jan 01 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
php解析url的三个示例
Jan 20 PHP
利用php输出不同的心形图案
Apr 22 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
php输出图像的方法实例分析
Feb 16 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
详解php与ethereum客户端交互
Apr 28 PHP
php对微信支付回调处理的方法
Aug 23 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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 self与$this的详解
2013/06/08 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
django中静态文件配置static的方法
2018/05/20 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
咖啡书吧创业计划书
2014/01/13 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
mysql sock文件存储了什么信息
2022/07/15 MySQL