1. 程式人生 > >簡單理解laravel框架中的服務容器,服務提供者以及怎樣調用服務

簡單理解laravel框架中的服務容器,服務提供者以及怎樣調用服務

laravel框架 通過 call art head 構造 div use edi

laravel被稱為最優雅的框架,最近正在學習中,對於用慣了thinkphp、ci框架的人來說,服務容器。服務提供者,依賴註入這些概念簡直是一臉懵逼。我花了些時間梳理了一下,也不敢確定自己說的是對的,如果有錯誤的地方還請多多包涵。我盡量把問題說的簡單易懂,希望能對通在學laravel的人有起到幫助作用 一、服務容器, 服務容器顧名思義是指裝載服務事務的容器,我的理解就是一個類,這個類稱它為容器,這個類下面的方法稱它為服務 example: 我創建一個服務容器我在app下建一個文件夾Test、創建文件\Test\TestService.php作為服務容器 <?php namespace App\Test; class TestService{ //這裏我寫一個服務方法,以被別的地方來調用 public function callme($say){ echo $say; } } 二、服務提供者服務提供者,就是提供服務的人。註意前面提到的服務容器是用來裝載服務的,而服務提供者是用來提供服務的。我舉個例子吧,把服務比喻成菜肴,而服務容器就是盛裝菜肴的器皿,而服務提供者就是上菜的服務員。顧客(調用服務的地方)想要上什麽菜(服務),需要通過服務員(服務提供者)傳遞。 example: 我創建一個服務提供者,在providers目錄下創建服務提供者TestServiceProvider.php,註意:服務提供者需要在config/app.php裏面的providers數組裏面註冊 <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Test\TestService; class TestServiceProvider extends ServiceProvider { public function boot() { // } public function register() { //單例實例化服務容器Test/TestService.php $this->app->singleton(‘test‘,function(){ return new TestService(); }); } } 三、在一個控制器裏面調用服務實例 <?php namespace App\Http\Controllers; use App\Test\TestService; use App\Http\Controllers\Controller; class TestController extends Controller { //在構造函數中依賴註入 function __construct(TestService $test){ $this->test=$test; //此時的的 $this->test相當於實例化了服務容器:TestService } public function get_index() { //調用服務容器TestService下的callme方法 $this->test->callme(‘hello‘); } }

簡單理解laravel框架中的服務容器,服務提供者以及怎樣調用服務