Laravel框架-服务容器

Laravel的服务容器实现了PSR11标准,主要用于依赖注入,降低代码耦合。通过服务绑定和解析,可以方便地管理并按需加载服务。例如,在控制器中通过类型提示实现依赖注入,或通过服务绑定和单例创建服务实例,再通过容器的`make`方法或直接调用助手函数获取服务。
摘要由CSDN通过智能技术生成

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值