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 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
php Static关键字实用方法
Jun 04 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
php array_keys 返回数组的键名
Oct 25 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
PHP实现简单的计算器
Aug 28 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  Yii清理缓存的实现方法
2016/11/10 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
Python简单基础小程序的实例代码
2019/04/28 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
酒店执行总经理岗位职责
2013/12/15 职场文书
《自然之道》教学反思
2014/02/11 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android