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 相关文章推荐
一个改进的UBB类
Oct 09 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
程序员编程十条戒律
Jul 09 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
php注销代码(session注销)
May 31 PHP
php分页代码学习示例分享
Feb 20 PHP
php使用百度ping服务代码实例
Jun 19 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 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
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
js css样式操作代码(批量操作)
2009/10/09 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python3 max()函数基础用法
2019/02/19 Python
python opencv进行图像拼接
2020/03/27 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
EJB的基本架构
2016/09/22 面试题
医院护士求职自荐信格式
2013/09/21 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
python3操作redis实现List列表实例
2021/08/04 Python
javascript实现计算器功能详解流程
2021/11/01 Javascript
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL