laravel被称为最优雅的框架,最近正在学习中,对于用惯了thinkphp、ci框架的人来说,服务容器。服务提供者,依赖注入这些概念简直是一脸懵逼。我花了些时间梳理了一下,也不敢确定自己说的是对的,如果有错误的地方还请多多包涵。我尽量把问题说的简单易懂,希望能对通在学laravel的人有起到帮助作用
一、服务容器, 服务容器顾名思义是指装载服务事务的容器,我的理解就是一个类,这个类称它为容器,这个类下面的方法称它为服务
example:
我创建一个服务容器我在app下建一个文件夹Test、创建文件\Test\TestService.php作为服务容器
<?php
namespace App\Test;
class TestService{
//这里我写一个服务方法,以被别的地方来调用
public function callme($say){
echo $say;
}
}
二、服务提供者服务提供者,就是提供服务的人。注意前面提到的服务容器是用来装载服务的,而服务提供者是用来提供服务的。我举个例子吧,把服务比喻成菜肴,而服务容器就是盛装菜肴的器皿,而服务提供者就是上菜的服务员。顾客(调用服务的地方)想要上什么菜(服务),需要通过服务员(服务提供者)传递。
example:
我创建一个服务提供者,在providers目录下创建服务提供者TestServiceProvider.php,注意:服务提供者需要在config/app.php里面的providers数组里面注册
<?php
 
namespace App\Providers;
 
use Illuminate\Support\ServiceProvider;
use App\Test\TestService;
class TestServiceProvider extends ServiceProvider
{
 
public function boot()
{
//
}
 
public function register()
{
//单例实例化服务容器Test/TestService.php
$this->app->singleton('test',function(){
return new TestService();
});
}
}
三、在一个控制器里面调用服务实例
<?php
namespace App\Http\Controllers;
use App\Test\TestService;
use App\Http\Controllers\Controller;
 
class TestController extends Controller
{
//在构造函数中依赖注入
function __construct(TestService $test){
$this->test=$test;
//此时的的 $this->test相当于实例化了服务容器:TestService
}
public function get_index()
{
//调用服务容器TestService下的callme方法
$this->test->callme('hello');
 
}
 
}

简单理解laravel框架中的服务容器,服务提供者以及怎样调用服务的更多相关文章

  1. Laravel框架中Echo的使用过程

    今天的这篇文章中给大家分享关于laravel框架中echo的使用,文章的内容是一步一步来的,用了16步走完一个过程,过程很清晰,希望可以帮助到有需要的朋友吧.话不多说,直接看内容.官方文档推荐使用 P ...

  2. laravel框架中所用到的依赖注入

    用Laravel开发前前后后有2个月左右了,之前一直写Java,就像找到Java和PHP之前的共同点,用Java的某些原理去理解PHP会发现还是有很多共通之处的.Java的依赖注入已经是一个很常见的概 ...

  3. laravel框架中Job和事件event的解析

    本篇文章给大家带来的内容是关于laravel框架中Job和事件event的解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在做项目的时候,一直对Job和Event有个疑惑.感觉两 ...

  4. 从yii2框架中的di容器源码中了解反射的作用

    反射简介 参考官方简介的话,PHP 5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 此外,反射 API 提供了方法来取出函数.类和方法中的文档注释. YII2框架中 ...

  5. laravel框架中超实用的功能介绍

    本篇文章给大家带来的内容是关于laravel框架中超实用的功能介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 让lumen的dd() dump()像laravel一样优雅 1 c ...

  6. Laravel框架中的数据库CURD操作、连贯操作、链式操作的用法

    Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富于 ...

  7. 在laravel框架中使用mq

    本文写于2018-11-28 1.部署laravel项目 https://github.com/laravel/laravel  通过git克隆项目,或者下载zip包然后解压等方式都可以把larave ...

  8. laravel框架中使用QueryList插件采集数据

    laravel框架中使用queryList 采集数据 采集数据对我们来说真家常便饭,那么苦苦的写正则采集那么一点点东西,花费了自己大把的时间和精力而且没有一点技术含量,这个时候就是使用我们的好搭档Qu ...

  9. Laravel框架中的make方法详解

    为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...

随机推荐

  1. 4、爬虫系列之mongodb

    mongodb mongo简介 简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数 ...

  2. MySQL高级知识(六)——索引优化

    前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解. 0.准备 创建经典的tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABL ...

  3. 设计模式のSingleton Pattern(单例模式)----创建模式

    单例模式没有什么好讲的,我们 举个例子 #region 单例定义 /// <summary> /// 类单例 /// </summary> private static Win ...

  4. php面试题整理(二)

    索引,desc 和explain unset只是删除了变量名

  5. EBS採购模块中的高速接收和高速接收事务

    EBS採购模块中的高速接收和高速接收事务 (版权声明.本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处.否则请与本人联系,违者必究) 高速功能是一个高速输入收货和接收事务的方法. 在收货 ...

  6. CSDN社区之星专訪:我的蜕变之路

    摘要:社区之星第49期採訪了爱奇艺研发总监陆其明.他分享了个人生涯.管理和程序猿素质等方面的看法.管理上他觉得对人要领导.要管的是事.而在程序猿素质上.他则引用Jeff Atwood的话称,成为优秀程 ...

  7. 清除tomcat日志文件的shell脚本

    #! /bin/bash d=`date +%F` exec >> /mydata/script/logs/$d>& echo "开始执行清除tomcat日志文件& ...

  8. [1] 从零开始 TensorFlow 学习

    计算图的基本概念 TensorFlow 的名字中己经说明了它最重要的两个概念一一Tensor 和 Flow Tensor: 张量(高阶数组,矩阵为二阶张量,向量为一阶张量,标量为零阶张量) Flow: ...

  9. Python学习笔记(1)-列表

    列表是什么? 列表由一系列按特定顺序排列的元素组成.列表看起来像这样:[1,2,3,4,1].在列表中,可以由零个或多个元素组成,元素之间用逗号分开,具有相同值元素允许出现多次 使用[ ]或list( ...

  10. 7.封装,static,方法重载

    一.访问修饰符1.public:公共的,所有在该项目中都可见2.protected:受保护的,同包,以及子类不同包可见3.默认:就是不写修饰符.同包4.private:私有,只在同类中 二.封装1.定 ...