W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Laravel 提供了幾個機會來使用服務(wù)容器以提高應(yīng)用程序的靈活性和可測試性。解析控制器是一個最主要的案例。所有的控制器都通過服務(wù)容器來進行解析,意味著你可以在控制器的構(gòu)造函數(shù)中「類型指定」所需依賴,而且它們將被自動注入。
<?php namespace App\Http\Controllers;
use Illuminate\Routing\Controller;
use App\Repositories\OrderRepository;
class OrdersController extends Controller {
/**
* The order repository instance.
*/
protected $orders;
/**
* Create a controller instance.
*
* @param OrderRepository $orders
* @return void
*/
public function __construct(OrderRepository $orders)
{
$this->orders = $orders;
}
/**
* Show all of the orders.
*
* @return Response
*/
public function index()
{
$orders = $this->orders->all();
return view('orders', ['orders' => $orders]);
}
}
在這個例子中,OrderRepository 類將被自動注入到控制器中。這意味著在進行 單元測試 時,我們可以綁定一個假的 OrderRepository 到容器中來代替我們對數(shù)據(jù)庫的真實操作,避免對真實數(shù)據(jù)庫的影響。
使用容器的其他幾個例子
當然,在上面提到過的,控制器并不是 Laravel 通過服務(wù)容器進行解析的唯一類。你也可以在路由的閉包中、過濾器中、隊列任務(wù)中、事件監(jiān)聽器中來「類型指定」你所需要的依賴。對于在這些情境中如何使用服務(wù)容器,請參考相關(guān)文檔。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: