Projects [SHOW]
2.1. Service Container - Bindings
Einführung
Der Laravel-Service-Container ist ein leistungsstarkes Werkzeug zur Verwaltung von Klassenabhängigkeiten und zur Durchführung von Dependency Injection. Dependency Injection ist eine ausgefallene Phrase, die im Wesentlichen Folgendes bedeutet: Klassenabhängigkeiten werden über den Konstruktor oder in einigen Fällen über Setter-Methoden in die Klasse "injiziert".
Betrachten wir ein einfaches Beispiel:
<?php
namespace App\Http\Controllers;
use App\User;
use App\Repositories\UserRepository;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* The user repository implementation.
*
* @var UserRepository
*/
protected $users;
/**
* Create a new controller instance.
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
{
$this->users = $users;
}
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function show($id)
{
$user = $this->users->find($id);
return view('user.profile', ['user' => $user]);
}
}
In diesem Beispiel muss der UserController Benutzer aus einer Datenquelle abrufen. Also werden wir einen Dienst einrichten, der in der Lage ist, Benutzer abzurufen. In diesem Zusammenhang verwendet unser UserRepository höchstwahrscheinlich Eloquent, um Benutzerinformationen aus der Datenbank abzurufen. Da das Repository jedoch injiziert wird, können wir es leicht mit einer anderen Implementierung austauschen. Wir sind auch in der Lage, beim Testen unserer Anwendung eine Dummy-Implementierung des UserRepository zu erstellen.