依賴注入在 Laravel 中是通過服務容器實現的。當需要使用一個類的實例時,可以在構造函數中直接聲明需要依賴的類,然后 Laravel 會自動幫你解析出需要的實例。
例如,假設有一個 UserService 類需要依賴 UserRepository 類,可以這樣實現依賴注入:
namespace App\Services;
use App\Repositories\UserRepository;
class UserService
{
protected $userRepository;
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
public function getAllUsers()
{
return $this->userRepository->getAll();
}
}
然后,在控制器中使用 UserService 類時,Laravel 會自動注入 UserRepository 實例:
namespace App\Http\Controllers;
use App\Services\UserService;
class UserController extends Controller
{
protected $userService;
public function __construct(UserService $userService)
{
$this->userService = $userService;
}
public function index()
{
$users = $this->userService->getAllUsers();
return view('users.index', ['users' => $users]);
}
}
通過這種方式,可以實現依賴注入,使代碼更加靈活和易于維護。