2016-12-28 4 views
-1

Also entwickle ich eine Web-App in PHP mit Laravel-Framework. Ich habe 12 Modelle und 1 Controller und 12 Repositories, die mit Modellen verbunden sind. In jedem Repository schreibe ich einige Funktionen mit Abfragen, so dass sie im Controller nicht wiederholt werden. Ich versuche, Repositories in Controller-Konstruktor zu injizieren, und weiß nicht, wie viele von ihnen zu viele sind?PHP maximale Anzahl von Repositories

Ich hörte, 1 oder 2 usualy, aber ich habe 12 von ihnen so weit.

Controller:

class PagesController extends Controller { 
    protected $review; 
    protected $organization; 
    protected $user; 
    protected $city; 
    protected $buyer; 
    protected $employee; 

    public function __construct(ReviewRepository $review, OrganizationRepository $organization, UserRepository $user, CityRepository $city, BuyerRepository $buyer, EmployeeRepository $employee) { //here are just 6 repositories, I have much more 
     $this->employee = $employee; 
     $this->city = $city; 
     $this->buyer = $buyer; 
     $this->user = $user; 
     $this->organization = $organization; 
     $this->review = $review; 
} 

Repository:

class ReviewRepository { 

protected $review; 

function __construct(Review $review) 
{ 
    $this->review = $review; 
} 
} 

Antwort

0

Wie in einem Kommentar gesagt, zu viele subjektiv ist. Wenn Sie jedoch diese Frage stellen, bedeutet das wahrscheinlich, dass es etwas zu überdenken gibt. Dies ist wiederum sehr subjektiv.

Aus meiner Sicht, und mein Verständnis von MVC, ist der ganze Punkt von Repositories Trennung von Bedenken. Vielleicht ist Ihr Controller verantwortlich für mehr, als es sein sollte?

In der von uns erstellten Anwendung haben wir uns dazu entschieden, Repositories als Container für die Geschäftslogik zu verwenden. Dies ist nicht das traditionelle Muster, aber Sie werden feststellen, dass jedes Entwurfsmuster unter bestimmten Umständen oft verbogen oder gebrochen ist.

Die Frage ist: Hat Ihr PageController wirklich Sichtbarkeit müssen auf ReviewsRepository, BuyerRepository, CityRepository, etc? Oder könnten Sie diese Logik in eine Klasse PageRepository kapseln, die dann für die Bereitstellung der richtigen Daten verantwortlich wäre, die Ihr PageController benötigt? Außerdem könnten Sie verschiedene verwandte Repositories in ihr eigenes Eltern-Repository verschieben, das die komplexeren Teile davon abstrahiert, um Ihre Abhängigkeiten weiter zu reduzieren.

Also die Moral der Geschichte ist, wenn ich mich fragen "ist das zu viel?", Das bedeutet in der Regel bedeutet, dass ich auf abstrahieren muss. Es bedeutet nicht, dass du es tun musst, aber einen Schritt zurück zu machen, tut nie weh.

Verwandte Themen