Laravel框架-服务容器

Laravel 框架-服务容器

它是什么:
  1. 服务容器,从容器两字,我们能想到的就是装东西的器皿
  2. 加上服务两字,那它就是一个存放各式各样服务的器皿了
  3. 在程序里面,它就是一个实现 PSR11 标准(依赖注入容器接口)的类,可以绑定各种服务的类
主要作用:
  1. 实现依赖注入功能,降低实现程序与依赖的耦合。实现的核心方法是new ReflectionClass()方法
  2. 服务绑定,可以简单理解成键值对形式绑定服务 $app['xxService'] = new xxService。实现过程采用闭包,可以实现按需加载
  3. 服务解析,可以简单理解成通过键来获取服务 $app['xxService']。程序中需要某服务时,就可以通过容器来解析服务。基于这个关系,如果项目需要切换某服务,只需要在服务绑定处修改绑定的服务即可
使用示例:
依赖注入:
<?php

namespace App\Http\Controllers;

class WelcomeController extends Controller
{
    public function index(\App\ServiceTest\GeneralService $generalService)
    {
        dd($this->generalService);
    }
}

服务绑定:
$app->bind(App\ServiceTest\GeneralService::class, function ($app) {
    return new App\ServiceTest\GeneralService();
});
$app->singleton(App\ServiceTest\SingleService::class, function ($app) {
    return new App\ServiceTest\SingleService();
});
$instance = new App\ServiceTest\InstanceService();
$app->instance('instanceService', $instance);

服务解析:
$generalServiceOne = $this->app->make(App\ServiceTest\GeneralService::class);
$generalServiceTwo = $this->app[App\ServiceTest\GeneralService::class];
$generalServiceThree = app(App\ServiceTest\GeneralService::class);
$generalServiceFour = \App::make(App\ServiceTest\GeneralService::class);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值