服务提供者案例

1.定义服务:对某个业务进行逻辑封装以后的一个类php

<?php
namespace App\Services;

class TestService
{

    public function __construct()
    {
    }

    public function helloWorld()
    {
        echo 'hello world';
    }
}

2.定义服务提供者:须要将定义好的服务类注册绑定,以便在程序中使用app

<?php

namespace App\Providers;

use App\Services\TestService;
use Illuminate\Support\ServiceProvider;

class TestServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    public function register()
    {
        $this->app->bind('test', function ($app) {
            return new TestService();
        });
    }
}

3.注册服务提供者到容器:ide

App\Providers\TestServiceProvider::class,

4.使用咱们的服务this

<?php
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

/**
 *
 */
class TestController extends Controller
{
    public function test1()
    {
        app('test')->helloWorld();
    }
}

 

1.什么是控制反转?以及怎么实现
        控制反转:当调用者(A)须要被调用者(B)的协助时,在传统的程序设计过程当中,一般由A来建立B的实例,但在这里,建立B的工做再也不由A来完成,而是将被调用者的建立移到调用者的外部(IoC容器),从而反转B的建立,消除了A对B建立的控制,所以称为控制反转。
        实现方式 将建立B实例的工做交由 IoC 容器( 服务容器)来完成,而后在A中注入B(经过构造器/方法注入实现),这样咱们就实现了调用者与被调用者的解耦,该过程被称为 依赖注入
 
2.什么是服务容器?以及它能干什么?
        服务容器:通俗的讲就是A须要B的服务,B须要C的服务,这些服务所有在服务容器中完成,统称服务容器
        用处:管理类依赖和执行依赖注入
 
3.什么是服务提供者?以及它干些什么?
        服务提供者:继承ServiceProvider的一个类,该类经过register方法,绑定一个服务(也就是业务逻辑类等等)到容器,实现这种功能的角色,称为服务提供者
        用法:能够经过  $this->app 变量访问容器,而后使用  bind 方法注册一个绑定
相关文章
相关标签/搜索