Ich habe eine Klasse, um einen Bericht über die Kursregistrierung in Laravel zu erstellen. Folgendes ist meine Klasse:Aggregierte Injektionen in Laravel
class Report {
protected $user;
protected $course;
protected $registration;
public function __construct(User $user, Course $course, Registration $registration) {
$this->user = $user;
$this->course = $course;
$this->registration = $registration;
}
public function build() {
// build report
}
}
Laravel wird automatisch die Instanz von Benutzer-, Kurs- und Registrierungsmodellen in den Bericht einfügen. Wenn ich mehr andere Model-Klassen benötige, die zum Erstellen des Berichts verwendet werden sollen, muss ich dem Konstruktor von Report weitere Argumente hinzufügen.
class Report {
protected $user;
protected $course;
protected $registration;
public function __construct(User $user, Course $course, Registration $registration, Another1 $another1, Another2 $another2, ...) {
$this->user = $user;
$this->course = $course;
$this->registration = $registration;
}
public function build() {
// build report
}
}
Ist das ein richtiger Weg? Gibt es eine andere Möglichkeit, die Klassen zu aggregieren, die in der Report-Klasse verwendet werden? Sollte ich Facade Pattern verwenden, um es zu refaktorieren?
Jede Hilfe wird geschätzt.