Ich kann nur mit Cake sprechen, und ich kann in Bezug auf MVC nichts Gutes dazu sagen. Sie wissen nicht tun MVC Recht. Codeigniter ist sehr ähnlich. Es ist überhaupt nicht seltsam, dass Sie MVC auch nach einer Weile nicht "bekommen" haben.
Bei MVC geht es einfach darum, drei verschiedene Komponenten der Logik Ihrer Anwendung richtig zu trennen: den Kern der App , die Präsentation und den Klebstoff, die erforderlich sind, damit beide in einem realen Kontext funktionieren.
Der Kern Ihrer App, der die gesamte Geschäftslogik, Datenbankinteraktion, Dienste, Pieptöne und Boops enthält, die Ihre App zu "Ihrer App" machen, ist das Modell. Das Modell ist keine bestimmte Sache in einer bestimmten Form, es ist alles Notwendige, damit Ihre App so funktioniert, wie sie funktioniert. Sie haben nur ein "Modell", nämlich Ihre App.
Die Ansicht wird verwendet, um auf irgendeine Weise auszugeben, was Ihr Modell tut. Es ist die Benutzeroberfläche. Es ist alles Notwendige, um dem Benutzer nützliche Informationen anzuzeigen. Dies kann eine Website sein, es kann eine Befehlszeilenschnittstelle sein, es kann eine native Desktop-GUI sein. Sie können alle drei in Ihrer App verwenden.
Der Controller ist einfach alles, was übrig bleibt, damit dies funktioniert, hauptsächlich das, was Benutzereingaben aufnimmt und an den entsprechenden Ort leitet. Möglicherweise verfügen Sie über verschiedene Arten von Controllern für verschiedene Arten von Kontexten, z. B. einen, der eingehende HTTP-Anforderungen verarbeiten kann, einen, der die Befehlszeileneingabe verarbeitet, und einen, der mit GUI-Ereignissen verbunden ist.
Welche besondere Form diese einzelnen Teile annehmen, hängt ganz von Ihrer App ab. Alle drei können eine Art eigene Mini-Anwendung sein. Jedes "Modell" des Template-Prefab-Frameworks wurde für einen allgemeinen Fall erstellt, damit Sie schnell etwas zum Laufen bringen können. Oft ist es nicht die optimale Form, die Ihr Modell annehmen sollte. Sie müssen eine eigene Struktur für Ihre App erstellen, unabhängig davon, was für die Erstellung am besten geeignet ist. Informieren Sie sich über OOP-Prinzipien, SOLID, Abhängigkeitsinjektion usw. und erstellen Sie Ihr Kernmodell gemäß diesen Richtlinien. Wickeln Sie dann nach Bedarf Ansichten und Controller darum.
Der Punkt dieser Trennung ist einfach, die App wartbar und erweiterbar zu machen. Das Modell enthält nichts, was für eine bestimmte Form der Eingabe oder Ausgabe spezifisch ist. Beispielsweise enthält es keinen formatspezifischen Text (wie Fehlermeldungen im HTML-Format). Es wird keine bestimmte Form der Eingabe angenommen (wie HTTP-Anforderungen). Umgekehrt enthält die Ansicht keine Geschäftslogik, sondern nur die Ausgabe . Und der Controller enthält auch keine Geschäftslogik, seine Aufgabe ist nur die "Eingabe" . Der Grund ist einfach, dass sowohl der Controller als auch die Ansicht austauschbar sind, Ihre App jedoch nicht.
Wenn Sie hierfür ein Framework verwenden möchten, verwenden Sie ein modulares Framework, mit dem Sie alles tun können, was Sie tun müssen. Hierfür eignen sich am besten Zend-, Symfony-, Laravel- und ähnliche komponentenbasierte Pick-and-Choose-Frameworks.