Projects [SHOW]
Architecture Concepts
Resolving
Die make Methode
Sie können die make-Methode verwenden, um eine Klasseninstanz aus dem Container herauszulösen. Die make-Methode akzeptiert den Namen der Klasse oder des Interfaces, die Sie auflösen möchten:
$api = $this->app->make('HelpSpot\API');
Wenn Sie sich an einem Ort Ihres Codes befinden, der keinen Zugriff auf die Variable $app hat, können Sie den Global resolve Helfer verwenden:
$api = resolve('HelpSpot\API');
Wenn einige der Abhängigkeiten Ihrer Klasse nicht über den Container auflösbar sind, können Sie sie injizieren, indem Sie sie als assoziatives Array an die makeWith-Methode übergeben:
$api = $this->app->makeWith('HelpSpot\API', ['id' => 1]);
Service Container - Container Events
Automatic Injection
Alternativ und vor allem können Sie im Konstruktor die Abhängigkeit einer vom Container aufgelösten Klasse, einschließlich Controller, Event Listener, Middleware und mehr, "typisieren". Zusätzlich können Sie Abhängigkeiten in der Handle-Methode von queued jobs eingeben. In der Praxis sollten die meisten Ihrer Objekte so durch den Container aufgelöst werden.
Beispielsweise können Sie im Konstruktor eines Controllers einen Tipp auf ein von Ihrer Anwendung definiertes Repository geben. Das Repository wird automatisch aufgelöst und in die Klasse injiziert:
<?php
namespace App\Http\Controllers;
use App\Users\Repository as UserRepository;
class UserController extends Controller
{
/**
* The user repository instance.
*/
protected $users;
/**
* Create a new controller instance.
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
{
$this->users = $users;
}
/**
* Show the user with the given ID.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//
}
}