Ich verwende Zend Framework und Lehre in dieser App
In meiner Webapplikation habe ich verschiedene individuelle Module wie Events, Konferenzen, Fallstudien .. so mache ich gerade Controller Design. In dem unten abgebildeten Regulatory Document ist der Controller und seine Unterfunktion seine Aktionen. So haben regulatorische Dokumente, Videos und Podcasts fast die gleiche Funktionalität. also ist dieses Design angemessen ...? In mvc für jede Aktion werde ich eine separate Ansicht haben. Und auf Benutzertyp muss ich möglicherweise Zugangsebenen auf diesen Modulen setzen. also habe ich separaten Controller gehalten, so dass ich das Modul für jeden Benutzertyp leicht steuern kann. Dies führt jedoch zu doppeltem Code.
Jetzt denke ich daran, eine Elternklasse zu bilden, und darin werde ich alle gängigen Methoden haben. z.B. Ich werde gemeinsame Klassenresourcen haben und darin werde ich Liste behalten, suchen, vorschlagen, favourite usw. hinzufügen. Und das wird der Elternteil zu den oben gegebenen Kontrolleuren sein.
Also, wie werde ich meine Sicht für all diese verschiedenen Module verwalten, wenn ich mit diesem Ansatz gehe ..? Wenn ich damit gehe, wird mein Code etwas unordentlich sein ..?
Wenn ich Sie richtig verstehe, haben Sie eine Reihe gängiger Verhaltensweisen bei Ihren regulatorischen Dokumenten, Videos und Podcasts.
In diesem Fall sollten Sie wahrscheinlich versuchen, die Gemeinsamkeiten in eine Elternklasse zu abstrahieren, aus der diese drei Bereiche erben.
Als Beispiel habe ich mein eigenes MVC-Framework, in dem ich eine Superklasse tnh_controller definiere, von der meine anderen Controller (zB: venue_controller, group_controller) erben. Im übergeordneten Controller definiere ich die Methoden header () und footer () und delete (). Ich kann dann diese unverändert in den Unterklassen verwenden und mir etwas Mühe ersparen.
Sie können auch einige der üblichen Arbeiten für Ihre Modelle (CRUD) in einer Modell-Superklasse ausführen und sie nur bei Bedarf überschreiben. Der Großteil der Logik für verschiedene Modelle stammt von Klassenvariablen (Tabellennamen, Spaltennamen usw.).
Ich würde mir nicht zu viele Gedanken darüber machen, ob ich "strikter" MVC bin. Versuchen Sie stattdessen, herauszufinden, was Ihnen Zeit spart und Ihren Code organisiert. Es hört sich an, als ob Sie auf der richtigen Spur sind und ähnliche Verhaltensweisen auf einer übergeordneten Ebene setzen.
Ich würde vorschlagen, alle Controller so zu gestalten, dass sie nette URLs und eine klare Struktur in den Modulen haben, aber die Controller dünn halten. Stellen Sie Ihre Domain-Logik in Services oder Entitäten, daher ist keine (oder nur wenige) Code-Duplizierung erforderlich.
Mehr in:
Von DDD:
Controller gehören zur Anwendungsschicht / Domänenlogik gehört zur Domänenschicht
Sie können immer noch einen separaten Controller haben, der suggest, addFavorite-Aktionen enthält, ohne sie zur übergeordneten Klasse für alle Controller zu machen. Grundsätzlich können die damit verbundenen UI-Elemente als Teilansichten gerendert werden und die Aktionen im entsprechenden Controller aufrufen. Auf diese Weise können Sie das Problem mit den Ansichten loswerden.
MVC-Design bedeutet, dass Sie für jede Ansicht einen Controller und ein Modell haben. Die Modelle müssen jedoch überhaupt keine Klassen sein oder ein anderes Modell für jede MVC haben. Normalerweise teilen Sie ein Modell zwischen einigen MVCs, oder Ihr Modell ist möglicherweise nur ein ganzzahliger Wert, den Sie im eigenen Controller definieren. Normalerweise möchten Sie vielleicht sogar Daten zwischen ihnen teilen, dann haben Sie einen Singleton-Modus:
Tags und Links php model-view-controller design-patterns zend-framework