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. python 列表 元祖

    # # 1,写代码,有如下列列表,按照要求实现每⼀一个功能li = ["alex", "WuSir", "ritian", "ba ...

  2. (4)Python列表list

       

  3. spring boot启动报错

    Exception encountered during context initialization - cancelling refresh attempt: org.springframewor ...

  4. Python学习笔记(3)-字符串

    创建字符串 一对单引号或双引号 >>> 'hello world' 'hello world' >>> "hello world" 'hello ...

  5. WiFi-ESP8266入门http(2-1)文件系统-复杂结构的网页

    https://blog.csdn.net/solar_Lan/article/details/74231360 用到的网页文件:链接:https://pan.baidu.com/s/1vk6xmsY ...

  6. jacoco+ant安装部署篇(统计代码覆盖率,适用自动化测试)

    1:什么是jacoco? JaCoCo是一个开源的覆盖率工具(官网地址:http://www.eclemma.org/JaCoCo/),它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant. ...

  7. MySQL去除查询结果重复

    出现结果重复数SQL(四表关联): SELECT COUNT(post.ID ) FROM wp_posts AS post LEFT JOIN wp_term_relationships AS re ...

  8. Could not get a resource from the pool 错误解决

    错误关键信息:Could not get a resource from the pool 通常原因是因为远程服务器上的redis没有配置好. 解决方案如下:(1)将redis.conf中的bind: ...

  9. 初学Python——第一节课

    一.Python语言的特性: 1.与C语言不同,Python语言是一门解释性语言.程序在执行过程中,执行一步.编译一步. 2.Python是一个动态类型语言,不需要定义变量的数据类型. 3.Pytho ...

  10. Java关键字(三)——static

    我们说Java是一种面向对象编程的语言,而对象是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,对同类对象抽象出其共性,便是Java中的类,我们可以用类描述世间万物,也可以说万物皆对象.但是 ...