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 相关文章推荐
打造计数器DIY三步曲(中)
Oct 09 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
php中定时计划任务的实现原理
Jan 08 PHP
基于php常用正则表达式的整理汇总
Jun 08 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
laravel框架的安装与路由实例分析
Oct 11 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 session会话的安全性分析
2011/09/08 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
ThinkPHP控制器详解
2015/07/27 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
简单的php购物车代码
2020/06/05 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
JavaScript中null与undefined分析
2009/07/25 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
python 实现矩阵按对角线打印
2019/11/29 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
有趣的广告词
2014/03/18 职场文书
超市工作总结范文2014
2014/12/19 职场文书
python playwright之元素定位示例详解
2022/07/23 Python