dedlfix: OOP + MVC Frage

Beitrag lesen

Hi!

Beschreibe doch bitte zunächst weniger aus der Sicht deiner derzeitigen Implementierung sondern mehr aus der Sicht der Aufgabenstellung, so dass man verstehen kann, was da und warum gebraucht wird. Das wird derzeit nicht klar, so dass viel Interpretationsspielraum vorhanden ist und die ersten Antworten dem von dir gewünschten Ziel vermutlich nicht sehr nahekommen.

Angenommen ich habe ein MVC-Pattern und das Modul "Sammlung"
und diese hat die Untermodule Fkt1-6.

Da nehme ich mal an, dass es sich bei einem Modul um einen Teil der Ausgabe handelt, beziehungsweise um Programmteil, das für diese Ausgabe zuzüglich der dafür notwendigen Verarbeitung zuständig ist.

Und ich brauche z.B. Fkt1 und Fkt3 _jedes_ mal, wenn Modul Sammlung aufgerufen wird, dann möchte ich direkt auf die Module von Fkt1,3 zugreifen und nicht erst über deren Controller gehen.

Jetzt verwirrst du mich. Ich denke, Sammlung als Modul ist ein Controller mit den Actions Fkt1..6. Klär mich doch da bitte mal auf, aber - siehe oben - vorwiegend aufgabenstellungsbezogen, dann darauf eingehend, warum du dann deine derzeitige Implementation gewählt hast (und wie die strukturell aussieht).

Kann man Modul-übergreifend _nur_ auf Models zugreifen um sich beispielsweise Informationen aus der Datenbank zu holen?

Da ich nicht genau weiß, ob du unter Modul das gleiche verstehst wie ich, kann ich dir da nicht genau anworten.

Oder sollte ich dafür extra eine Methode im jeweiligen Controller schreiben der das macht?

Generell gesehen wäre zu überlegen, wie die Aufgabenverteilung geregelt ist und ob es eine Abgrenzung zwischen den Teilaufgaben gibt und wie stark die sein soll/muss.

Weil das wäre dann praktisch ein unnötiger Klassenaufruf und ein unnötiger Methodenaufruf mehr und bei PHP - kostet sowas nun mal Performance.

Ist das eine theoretische Überlegung oder eine (durch Messung) nachgewiesene gravierende Beeinträchtigung der Reaktionszeit?

Deshalb habe ich z.B. Front-Controller, Dispatcher und autoload-Funktion in einer Datei (index.php), wozu noch mehr Dateien aufrufen wenn diese eh immer geladen werden und so groß sind die 3 Sachen nicht, als das mir die Ordnung wegfliegen würde.

Bei häufigem Gebrauch liegen die sicher alle im Cache. Wie groß sind denn die Unterschiede zwischen der getrennten und zusammengeführten Version?

Und was das Model angeht. Bisher stehen dort nur die Methoden in der direkt auf die Datenbank zugegriffen wird.
Jetzt arbeite ich an einer Bilderverwaltung, sollten diese Sachen (ich muss Bilder entgegennehmen, prüfen,ggf. verkleinern, verschieben) ins Model?

Geschäftslogik kommt ins Model, Ausgabeaufbreitung in die View. Dirigierende Aufgaben übernimmt der Controller. Das Model muss nicht immer nur eine Datenbankabstraktion sein, es kann auch als Repository gestaltet sein, in dem die geschäftlichen Verfahren gesammelt liegen.

Du kannst dir ja mal die ASP.NET-Tutorials zu deren MVC-Implementation ansehen. Besonders da #20 - Validating with a Service Layer.

Lo!