Laravel 8 簡介

2021-07-16 17:30 更新

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)重要的。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號