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. 为JQuery EasyUI 表单组件加上“清除”功能

    1.背景 在使用 EasyUI 各表单组件时,尤其是使用 ComboBox(下拉列表框).DateBox(日期输入框).DateTimeBox(日期时间输入框)这三个组件时,经常有这样的需求,下拉框或 ...

  2. js开发打印证书功能

    最近突然被加了要打印证书的功能的需求.其实打印功能很简单,直接调用window.print()就可以打印,只是这是最基本的打印,会打印当前页面的所有元素,而我们要的是局部打印,实现方法: 1.设置好开 ...

  3. JavaScript的对象详解

    JavaScript对象的概述 什么是对象,代表现实中的某个事物, 是该事物在编程中的抽象,多个数据的集合体(封装体),用于保存多个数据的容器 为什么要用对象,便于对多个数据进行统一管理 对象属于一种 ...

  4. C. Nice Garland Codeforces Round #535 (Div. 3) 思维题

    C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  5. selenium 使用

    selenium selenium:可以让浏览器完成相关自动化的操作 环境安装: pip install selenium 编码流程: 导包 创建某一款浏览器对象 制定相关的行为动作 from sel ...

  6. PHP到底有多牛?你所知道的网站都在用它

    PHP到底有多牛?你所知道的网站都在用它 提起PHP,很多人的第一印象就是网站开发,确实,在网站开发方面,PHP难逢对手,当之无愧是“世界上最好的语言”. 有数据显示,目前全球5000万互联网网站中, ...

  7. 2.04-proxy-handler

    import urllib.request def create_proxy_handler(): url = "https://blog.csdn.net/m0_37499059/arti ...

  8. 手把手丨我们在UCL找到了一个糖尿病数据集,用机器学习预测糖尿病(三)

    梯度提升: from sklearn.ensemble import GradientBoostingClassifier gb=GradientBoostingClassifier(random_s ...

  9. Linux如何查看端口状态

    netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的 ...

  10. 剑指offer——链表中倒数第k个结点

    输入一个链表,输出该链表中倒数第k个结点. class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned ...