1. 程式人生 > >Laravel創建 Service Provider 測試實例

Laravel創建 Service Provider 測試實例

php laravel ServiceProvider 服務提供者

從某種意義上說,服務提供者有點類似HTTP控制器,HTTP控制器用於為相關路由註冊提供統一管理,而服務提供者用於為相關服務容器提供統一綁定場所,此外服務提供者還可以做一些初始化啟動操作。Laravel的每個核心組件都對應一個服務提供者,可以這麽說,服務提供者是Laravel的心臟,是Laravel的核心,核心組件類在這裏完成註冊、初始化以供後續調用。

既然這麽重要,那麽如何在自己的Laravel應用中定義和使用服務提供者呢?


1、定義服務類

我們這裏先定義一個綁定到容器的測試類TestService,為了對類的定義加以約束,我們同時還定義一個契約接口TestContract

技術分享圖片

定義TestService

如下:

技術分享圖片


2、創建服務提供者

接下來我們定義一個服務提供者TestServiceProvider用於註冊該類到容器。創建服務提供者可以使用如下Artisan命令:

技術分享圖片

該命令會在app/Providers目錄下生成一個TestServiceProvider.php文件,我們編輯該文件內容如下:

技術分享圖片


3、註冊服務提供者

定義完服務提供者類後,接下來我們需要將該服務提供者註冊到應用中,很簡單,只需將該類追加到配置文件config/app.phpproviders數組中即可:

技術分享圖片


4、測試服務提供者

這樣我們就可以在應用中使用該服務提供者了,為了測試該服務提供者我們首先使用Artisan命令創建一個資源控制器TestController

php artisan make:controlle TestController --resource // 該命令創建資源控制器

然後在路由配置文件routes.php中定義路由:


技術分享圖片

最後去TestController中編寫測試代碼:

技術分享圖片

註意: 在控制器中的構造函數中

技術分享圖片

返回TestService實例是因為在TestServiceProvider中進行了綁定,在callback函數中實例化了TestService這個類並且返回

然後我們去瀏覽器中訪問http://laravel.app:8000/test,分別測試使用App::make和依賴註入解析綁定類調用callMe方法的輸出,結果一樣,都是

技術分享圖片

好了,大功告成,是不是很簡單?!


Laravel創建 Service Provider 測試實例