W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Laravel 提供了幾個(gè)機(jī)會(huì)來(lái)使用服務(wù)容器以提高應(yīng)用程序的靈活性和可測(cè)試性。解析控制器是一個(gè)最主要的案例。所有的控制器都通過(guò)服務(wù)容器來(lái)進(jìn)行解析,意味著你可以在控制器的構(gòu)造函數(shù)中「類型指定」所需依賴,而且它們將被自動(dòng)注入。
<?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]);
}
}
在這個(gè)例子中,OrderRepository 類將被自動(dòng)注入到控制器中。這意味著在進(jìn)行 單元測(cè)試 時(shí),我們可以綁定一個(gè)假的 OrderRepository 到容器中來(lái)代替我們對(duì)數(shù)據(jù)庫(kù)的真實(shí)操作,避免對(duì)真實(shí)數(shù)據(jù)庫(kù)的影響。
使用容器的其他幾個(gè)例子
當(dāng)然,在上面提到過(guò)的,控制器并不是 Laravel 通過(guò)服務(wù)容器進(jìn)行解析的唯一類。你也可以在路由的閉包中、過(guò)濾器中、隊(duì)列任務(wù)中、事件監(jiān)聽(tīng)器中來(lái)「類型指定」你所需要的依賴。對(duì)于在這些情境中如何使用服務(wù)容器,請(qǐng)參考相關(guān)文檔。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: