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 相关文章推荐
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
php接口与接口引用的深入解析
Aug 09 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
php目录操作实例代码
Feb 21 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
WordPress网站性能优化指南
Nov 18 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
jquery实现拖动效果
2016/08/10 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
python实现的简单文本类游戏实例
2015/04/28 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
韩国现代百货官网:Hmall
2018/03/21 全球购物
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
如何整合JQuery和Prototype
2014/01/31 面试题
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
售后服务质量承诺书
2015/04/29 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
新生开学寄语大全
2015/05/28 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
2016猴年春节问候语
2015/11/11 职场文书
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python