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 中的类
Oct 09 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 PHP
php实现简单文件下载的方法
Jan 30 PHP
PHP输出日历表代码实例
Mar 27 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
thinkphp5使用无限极分类
Feb 18 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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-pcntl 实现多进程代码
2016/09/30 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
jquery创建div 实现代码
2009/04/27 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
python操作xml文件详细介绍
2014/06/09 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python语法分析之字符串格式化
2019/06/13 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
python环境下安装opencv库的方法
2020/03/05 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
python ETL工具 pyetl
2020/06/07 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
中专生的个人自我评价
2013/12/11 职场文书
白莲教口号
2014/06/18 职场文书
工作证明格式及范本
2014/09/12 职场文书
典型事迹材料范文
2014/12/29 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
Python可视化学习之seaborn调色盘
2022/02/24 Python
SQL Server实现分页方法介绍
2022/03/16 SQL Server
Python加密技术之RSA加密解密的实现
2022/04/08 Python
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python