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 相关文章推荐
快速配置PHPMyAdmin方法
Jun 05 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
php 函数中静态变量使用的问题实例分析
Mar 05 PHP
基于PHP的登录和注册的功能的实现
Aug 06 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 PHP
Linux系统下安装PHP7.3版本
Jun 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
Python批量修改文件后缀的方法
2014/01/26 Python
Python实现的石头剪子布代码分享
2014/08/22 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
python中正则的使用指南
2016/12/04 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
Django admin组件的使用
2020/10/24 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
大一学生假期实习的自我评价
2013/10/12 职场文书
继承公证书样本
2014/04/04 职场文书
请假条范文大全
2014/04/10 职场文书
项目合作协议书范本
2014/04/16 职场文书