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面向对象中static静态属性与方法的内存位置分析
Feb 08 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
laravel添加前台跳转成功页面示例
Oct 22 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
输出控制类
2006/10/09 PHP
php使用session二维数组实例
2014/11/06 PHP
详解php中反射的应用
2016/03/15 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
js实现消息滚动效果
2017/01/18 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
Python AES加密模块用法分析
2017/05/22 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
最好的商品表达自己:Cafepress
2019/09/04 全球购物
英语生日邀请函
2014/01/23 职场文书
环保标语大全
2014/06/12 职场文书
五四青年节活动总结
2015/02/10 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
装修安全责任协议书
2016/03/22 职场文书