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学习 运算符与运算符优先级
Jun 15 PHP
php session和cookie使用说明
Apr 07 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
深入php数据采集的详解
Jun 02 PHP
php和jquery实现地图区域数据统计展示数据示例
Feb 12 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
Jun 05 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
php去除头尾空格的2种方法
Mar 16 PHP
PHP自定义多进制的方法
Nov 03 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
Mar 21 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实现批量压缩图片文件大小的脚本
2014/07/04 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
python列表推导式入门学习解析
2019/12/02 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
金融专业个人求职信范文
2013/11/28 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
2014年团工作总结
2014/11/27 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
python文件与路径操作神器 pathlib
2022/04/01 Python