W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
所有的服務(wù)提供者都應(yīng)繼承 Illuminate\Support\ServiceProvider 此一類。在這個抽象類中,至少必須定義一個方法: register 。在 register 方法中,應(yīng)該只綁定服務(wù)到服務(wù)容器之中。你永遠不該試圖在 register 方法中注冊任何事件監(jiān)聽器、路由或任何其他功能。
Artisan 命令行接口可以很容易地通過 make:provider 產(chǎn)生新的提供者:
php artisan make:provider RiakServiceProvider
現(xiàn)在,讓我們來看看基本的服務(wù)提供者:
<?php namespace App\Providers;
use Riak\Connection;
use Illuminate\Support\ServiceProvider;
class RiakServiceProvider extends ServiceProvider {
/**
* 在容器中注冊綁定。
*
* @return void
*/
public function register()
{
$this->app->singleton('Riak\Contracts\Connection', function($app)
{
return new Connection($app['config']['riak']);
});
}
}
這個服務(wù)提供者只定義了一個 register 方法,并在服務(wù)容器中使用此方法定義了一份 Riak\Contracts\Connection 的實現(xiàn)。若你還不了解服務(wù)容器是如何運作的,不用擔(dān)心,我們很快會提到它。
此類位于 App\Providers 命名空間之下,因為這是 Laravel 中默認服務(wù)提供者所在的位置。然而,你可以隨自己的需要改變它。你的服務(wù)提供者可被置于任何 Composer 能自動加載的位置。
所以,若我們需要在服務(wù)提供者中注冊一個事件監(jiān)聽器,該怎么做?它應(yīng)該在 boot 方法中完成。這個方法會在所有的服務(wù)提供者注冊后才被調(diào)用,這能讓你使用框架中其他所有已注冊過的服務(wù)。
<?php namespace App\Providers;
use Event;
use Illuminate\Support\ServiceProvider;
class EventServiceProvider extends ServiceProvider {
/**
* 執(zhí)行注冊后的啟動服務(wù)。
*
* @return void
*/
public function boot()
{
Event::listen('SomeEvent', 'SomeEventHandler');
}
/**
* 在容器中注冊綁定。
*
* @return void
*/
public function register()
{
//
}
}
我們可以對 boot 方法中的依賴作類型提示。服務(wù)容器會自動注入任何你所需要的依賴:
use Illuminate\Contracts\Events\Dispatcher;
public function boot(Dispatcher $events)
{
$events->listen('SomeEvent', 'SomeEventHandler');
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: