最近看一些laravel資料,有一些關(guān)于laravel的理解,下面分享一下烈菌。首先先介紹一下laravel服務(wù)和服務(wù)提供者的作用爱榕。
服務(wù)提供者
首先服務(wù)提供者瓣喊,是構(gòu)建在服務(wù)容器的基礎(chǔ)上的。是先存在服務(wù)容器后黔酥,然后把服務(wù)容器注冊到應(yīng)用中藻三。包括注冊服務(wù)容器綁定、事件偵聽器跪者、中間件棵帽,甚至路由。服務(wù)提供者是設(shè)置應(yīng)用程序的中心所在渣玲。若你打開 Laravel 的<code>config/app.php</code>
文件逗概,你將會看到 providers 數(shù)組。這些都是你的應(yīng)用程序會加載到的所有服務(wù)提供者類忘衍。
服務(wù)容器
所有的服務(wù)容器綁定都會注冊至服務(wù)容器提供者中逾苫,服務(wù)容器能夠?qū)⒅付ǖ膶?shí)現(xiàn)綁定至接口卿城。
具體步驟
(1)定義服務(wù)容器接口
(2)定義服務(wù)提供者
(3)注冊服務(wù)
示例代碼
<?php
use Illuminate\Support\ServicePorovider;
class BackendServiceProvider extends ServiceProvider{\
public function index{
$this->app->bind(
'Acame\Repositories\OrderRepositoryInterface',
'Acame\Repositories\DbOrderRepository'
);
}
}
上面的代碼是服務(wù)器提供者,用來將指定的實(shí)現(xiàn)綁定至接口铅搓。
namespace Acme\Repositories;
interface OrderResponsitoryInterface{
public function getAll();
public function find($id)
}
上面的代碼是定義服務(wù)容器接口瑟押。
namespace Aceme\Reponsitories;
use Order;
class DbOrderRepository implements OrderRepositoryInterface{
public funtion getAll(){
return Order::all();
};
public function find(){
return findorfail($id);
};
}
類繼承接口
'providers' => [
//其他服務(wù)提供者
Acme\Responsitories\BackendServiceProvider::class
],