W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Laravel 服務(wù)容器是一個用于管理類依賴以及實現(xiàn)依賴注入的強有力工具。依賴注入這個名詞表面看起來花哨,實質(zhì)上是指:通過構(gòu)造函數(shù),或者某些情況下通過「setter」方法將類依賴「注入」到類中。
我們來看一個簡單的例子:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Repositories\UserRepository;
use App\Models\User;
class UserController extends Controller
{
/**
* user倉儲的實現(xiàn)
*
* @var UserRepository
*/
protected $users;
/**
* 創(chuàng)建一個新的控制器實例
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
{
$this->users = $users;
}
/**
* 展示給定用戶的信息
*
* @param int $id
* @return Response
*/
public function show($id)
{
$user = $this->users->find($id);
return view('user.profile', ['user' => $user]);
}
}
在這個例子中,UserController
控制器需要從數(shù)據(jù)源中獲取 users。 所以,我們可以注入一個能夠獲取 users 的服務(wù)。在這種情況下,我們的存儲倉庫 UserRepository
極有可能使用 Eloquent 從數(shù)據(jù)庫中獲取用戶信息。然而,因為 repository 是通過 UserRepository 注入的,我們可以很輕易的將其切換為另一個實現(xiàn)。 另外,這種方式的便利之處也體現(xiàn)在:當(dāng)需要為應(yīng)用編寫測試的時候,我們也可以很輕松地 “模擬” 或者創(chuàng)建一個 UserRepository
存儲層的偽實現(xiàn)來操作。
深入理解服務(wù)容器,對于構(gòu)建一個強大的、大型的應(yīng)用,以及對 Laravel 核心本身的貢獻都是至關(guān)重要的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: