Laravel 5.4向IoC容器中添加自定义类的方法示例


Posted in PHP onAugust 15, 2017

IoC 容器

容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,有这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调,通过这种容器,我们得以实现许多高级的功能,其中最常提到的,就是 “解耦” 、“依赖注入(DI)”。

IoC 容器 —— Laravel 的核心

Laravel 的核心就是一个 IoC 容器,根据文档,称其为“服务容器”,顾名思义,该容器提供了整个框架中需要的一系列服务。作为初学者,很多人会在这一个概念上犯难,因此,我打算从一些基础的内容开始讲解,通过理解面向对象开发中依赖的产生和解决方法,来逐渐揭开“依赖注入”的面纱,逐渐理解这一神奇的设计理念。

本文将详细介绍关于Laravel5.4向IoC容器添加自定义类的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

IoC容器添加自定义类

1、假设我们要建一个交易类,app/Trade/Sale.php

<?php
namespace App\Trade;
class Sale
{
public function exchange()
{
 dd('交易成功啦!');
}
}

2、在Providers目录下创建一个服务提供者 TradeServiceProvider

php artisan make:provider TradeServiceProvider

3、然后在 TradeServiceProvider.php 的register方法中将我们的类进行绑定

/**
 * Register the application services.
 *
 * @return void
 */
public function register()
{
 //
 $this->app->bind('trade',function(){
  return new Sale();
 });
}

4、接下来要去 config/app.php 下的providers数组中增加一行,

App\Providers\TradeServiceProvider::class,

5、然后在我们的路由中写一个测试

Route::get('/',function (){
$trade = app('trade');
dd($trade->exchange());
}

输出结果:交易成功啦!

6、至此我们就将我们自己的类添加到IoC 容器中了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
谈谈PHP语法(4)
Oct 09 PHP
利用static实现表格的颜色隔行显示
Oct 09 PHP
php 错误处理经验分享
Oct 11 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
yii框架通过控制台命令创建定时任务示例
Apr 30 PHP
PHP编程之设置apache虚拟目录
Jul 08 PHP
thinkPHP分页功能实例详解
May 05 PHP
PHP读取Excel类文件
May 15 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 #PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 #PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 #PHP
PHP实现的回溯算法示例
Aug 15 #PHP
php简单中奖算法(实例)
Aug 15 #PHP
PHP实现的随机红包算法示例
Aug 14 #PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 #PHP
You might like
PHP聊天室技术
2006/10/09 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
今天是星期几的4种JS代码写法
2013/09/17 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
python如何保证输入键入数字的方法
2019/08/23 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
工程造价专业大专生求职信
2013/10/06 职场文书
政府门卫岗位职责
2014/04/29 职场文书
门卫岗位职责
2015/02/09 职场文书
入党个人总结范文
2015/03/02 职场文书
学校学期工作总结
2015/08/13 职场文书
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js