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 生成饼图 三维饼图
Sep 28 PHP
php 获取客户端的真实ip
Nov 30 PHP
在PHP中养成7个面向对象的好习惯
Jan 28 PHP
php生成QRcode实例
Sep 22 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
PHP中Http协议post请求参数
Nov 02 PHP
PHP Oauth授权和本地加密实现方法
Aug 12 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
PHP 传输会话curl函数的实例详解
Sep 12 PHP
PHP命名空间简单用法示例
Dec 28 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 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 $_FILES函数详解
2011/03/09 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
js实现筛选功能
2020/11/24 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
python实现定时发送邮件
2020/12/23 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
weblogic面试题
2016/03/07 面试题
《欢乐的泼水节》教学反思
2014/04/22 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
微观世界观后感
2015/06/10 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL