服務提供者案例

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 方法註冊一個綁定
相關文章
相關標籤/搜索