| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Bewertung: |
| | |
| Erfahrener Benutzer Registriert seit: 25.09.2009
Beiträge: 2.115
PHP-Kenntnisse: Fortgeschritten ![]() ![]() | Hallo leute, ich schaue mir gerade diese Tutorial an um MVC ein wenig besser zu verstehen http://tutorials.lemme.at/mvc-mit-php/index.html Also vom gedanken her ist klar, dass der Controller anhand der Benutzeraktionen ein View ausgibt und dem View eventuelle Daten vom Model abgibt.. nun kommt es aber zur Praxis. Soweit ich verstanden habe, MUSS zu jedem Controller ein View erstellt werden. Models gibt es aber nicht viele. Laut dem Tutorial haben die eine instanz von View und Model im Controller erstellt und die Methoden der Klassen aufgerufen. Ich finde das ganze ein wenig unpraktisch und habe mir folgendes überlegt: Ich erstelle eine Klasse BaseView, BaseController,BaseModel BaseModel ist die Mutterklasse von XMLModel //Daten kommen aus XML Dateien JSONModel //Daten kommen aus JSON Dateien für Ajax PDOModel //Daten kommen aus der Datenbank POModel //Daten kommen aus .po Dateien für gettext Das BaseView soll im Grunde ein Templateparser sein und jedesmal automatisch anhand der Kindklasse eine Datei einbinden. zb LoginWindowView extends BaseView dabei wird die Datei LoginWindow.html eingebunden in der BaseView klasse und geparst. Das View Bestimmt welches Model aufgerufen werden soll anhand Template variablen. zb steht in der LoginWindow.html dann sowas wie {text->foo} //Damit wird POModel instanz im BaseView erzeugt und foo ausgegeben {xml->bar->foo->bla} //XMLModel wird instanziert {var->foobar} //Diese Variable befindet wird in LoginWindowController belegt um zb anzuzeigen dass Benutzername nicht stimmt Also zusammengefasst: Ich habe eine ControllerFactory die anhand von $_REQUEST einen Controller Aufruft, dieser Controller bestimmt welche View er aufrufen soll und das View ruft jenachdem ein bestimmtes Model auf, wobei der Controller auch ein Model aufrufen kann bzw ruft der Controller andere klassen die nichts mit MVC zutun haben auf und diese klassen rufen dann ein Model auf. zb PHP-Code: Meine Frage wäre nun habe ich es so richtig verstanden und kann man es so umsetzen? Oder wäre es kein Richtiges MVC? Oder habe ich alles komplett falsch verstanden? MFG Geändert von BlackScorp (07.06.2011 um 09:10 Uhr). |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |||||
| Erfahrener Benutzer Registriert seit: 25.09.2009
Beiträge: 2.115
PHP-Kenntnisse: Fortgeschritten ![]() ![]() | Zitat:
Zitat:
PHP-Code: das Assign kann man ja für die "wichtigen" daten benutzen. Zitat:
Zitat:
wobei ich mir die frage stelle ob man nicht noch eine sessionModel und CookieModel klasse benötigt, genauso wie eine GETModel und POSTMOdel weil es ja alles datenquellen sind.. also würden man dann weiter um 3 ecken denken und sagen dass ein Model ein Controller aufruft der ein View aufruft der ein Model aufruft... bin gerade leicht verwirrt. Geändert von BlackScorp (07.06.2011 um 10:08 Uhr). | ||||
| | |
| | |||||||
| Erfahrener Benutzer Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Im Web läuft es im Prinzip so: Controller wird aufgerufen, der ruft das/die Views und Models auf. Vielleicht solltest Du Dir mal den hmv-Ansatz anschauen, der gefällt Dir vielleicht etwas besser.. | ||||||
| | |
| | ||||||
| Erfahrener Benutzer Registriert seit: 25.09.2009
Beiträge: 2.115
PHP-Kenntnisse: Fortgeschritten ![]() ![]() | Zitat:
Wenn ein View eine Instanz von einem Model aufruft dann ist es doch keine entscheidungsgewalt sondern eine klare Trennung.. Controller soll eben nicht bestimmen welche werte in einem View angezeigt werden und woher die Daten kommen. Er soll kontrollieren und bestimmen was angezeigt werden soll. Zitat:
laut wiki steht hier folgendes: Zitat:
Zitat:
Zitat:
zur jeder Präsentation exestiert ein Modell.. wahrscheinlich ist eine Template Datei eine HTMLModel klasse oder so.. entweder ist das MVC Tutorial falsch oder der Wiki eintrag.. | |||||
| | |
| | ||||||||
| Erfahrener Benutzer Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | Zitat:
Zitat:
Unter dem View versteht man i. d. R. das, was Du hier als Template bezeichnest. Schau Dir vielleicht mal vorhandene MVC-Frameworks an. Die meisten bieten einen schematischen Überblick über ihre Funktionsweise, so dass Du das nachvollziehen kannst. Zitat:
Inwiefern das Model Datenoperationen ausführen kann, hängt von der Applikation ab. Zitat:
Verinnerlich Dir das Prinzip: Front-Controller -> Controller (Holt sich ggf. Daten vom Model und weist sie dem View zu) -> View (Stellt Daten dar und nimmt Interaktionen des Users entgegen) -> Front-Controller -> ... Zitat:
Nur ist der Fokus bei beiden unterschiedlich.Zitat:
Zitat:
| |||||||
| | |
| | |
| Erfahrener Benutzer Registriert seit: 25.09.2009
Beiträge: 2.115
PHP-Kenntnisse: Fortgeschritten ![]() ![]() | Bezüglich des Front-Controller. in CakePHP wird dafür der "Router" verwendet, der bestimmt welceh controller aufgerufen werden.(denke ich) View-Klasse ist im grunde "Template parser".(verstanden soweit) mit Model->daten anzeigen meinte ich halt return irgendwas also variable an das View übergeben und das view zeigt es an. Bezüglich View bestimmt selber woher seine daten kommen. Soweit ich es gesehen habe, wird sowas bei APF auch gemacht, da geht es sogar noch weiter, ein View bindet ein Controller in sich PHP-Code: PHP-Code: also das anschauen der Frameworks bringt ja nicht wirklich was , da ja jeder es so macht wie es gerade passt.. also könnte man ja folgenden Prinzip verwenden ohne zu sagen dass es falsch ist: 1)MainController wird aufgerufen 2) MainController lädt MainView 3) MainView holt sich ggf. daten aus Models und ruft ggf. SubController auf 4) Je nach request kann ein SubController ein Model aufrufen und daten manipulieren, an view übergeben oder eine externe klasse aufrufen . Zusätzlich MUSS der SubController ein dazugehöriges View aufrufen. 5) das aufgerufene subView holt sich weitere daten aus einem Model langsam glaube ich dass das MVC so ein "Nichts ist falsch,alles ist erlaubt " ding solange man ganz klar aufteilt dass Daten im Model gespeichert werden, anzeige durch ein View passiert und der Controller bestimmt was angezeigt wird. |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Drei spezielle Fragen zu CSS | Karottenkopf51 | HTML, Usability und Barrierefreiheit | 3 | 22.05.2011 12:52 |
| PHP Fragen (IDE, Kommentare, Vordefinierte Variablen usw.) | thedoctor46 | PHP Einsteiger | 2 | 08.02.2011 15:08 |
| Performance Fragen | jwka61 | PHP Tipps 2010 | 7 | 17.11.2010 19:48 |
| Erneuern von Fragen | DasBlatt | PHP Tipps 2010 | 8 | 22.02.2010 15:30 |
| Ein paar kleine Fragen | Benshy | PHP Tipps 2009 | 5 | 08.08.2009 17:21 |
| ein paar Fragen (wegen eines Loginhistory) | Ninos | PHP Tipps 2009 | 5 | 04.04.2009 14:59 |
| PHP/MySQL Softwareprojekt - grundsätzliche Fragen | spacemanspiff | Software-Design | 1 | 30.01.2009 14:40 |
| Renommee Funktion wirft Fragen... | tomtaz | Board-Support | 11 | 02.07.2008 21:18 |
| gettext, einige fragen | notyyy | PHP Tipps 2008 | 12 | 01.05.2008 12:09 |
| Generelle PHP Fragen | Madden | PHP-Fortgeschrittene | 3 | 11.04.2005 01:24 |
| [Erledigt] Allgemeine Anfänger Fragen | PHP Tipps 2004-2 | 5 | 20.12.2004 14:57 | |
| Fragen über Fragen :) | Igäl | PHP Tipps 2004 | 3 | 26.08.2004 08:59 |
| [Erledigt] Fragen über Fragen... wer kann helfen? | PHP Tipps 2004 | 2 | 08.07.2004 21:12 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| classe automatisch finden php mvc, wie ruft man controller in mvc php auf, apf where pageurlname, php mvc verstehen, lemme, php form ruft klasse, lädt der view die dateien oder der controller, ext designer mvc, getserviceobject() base_controller, &$this->getserviceobject(\'core::database\',\'connectionmanager\'), extends base_controller apf getserviceobject, php: mvc zuerst view, template, mvc instanzieren, mvc, php development, mvc php |