php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.09.2010, 01:03  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Alex04 Beitrag anzeigen
Bzw. hättest du einen Vorschlag das besser zu lösen ?
So wie wohl jedes Framework auch: ein Controller, viele Views.
Aber das willst du ja nicht hören.

Man muss übrigens nicht zu jeder angeblichen Lösung ein Problem herbeikonstruieren - man darf auch schon vorher erkennen, dass es unsinnig ist.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.09.2010, 04:23  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Beispiele:

- Du hast einen Newcontroller und möchtest je nach Anforderung
die Daten als XML, als HTML, pdf oder RSS-Feed ausgeben.
Du würdest hier also 4 nahezu identische Newscontroller machen.

- Du hast eine Seite welche dem User Fehler anzeigt.
Machst jetzt einen Newserror-Controller, einen Eventerror-Controller
und jeweils ne View dazu ? Obwohl die View immer gleich ist
und nur mit anderen Fehlermeldungen ausgeliefert wird ?

Oder ist es nicht sinnvoller daß der Newscontroller
beim Auftreten eines Fehlers die Errorview mit den nötigen Daten
versorgt und wenn keiner auftritt eben die Newsview ?
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Alt 07.09.2010, 05:36  
Neuer Benutzer
 
Registriert seit: 01.09.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
Alex04 befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

wieder besten Dank für die Antworten.

Zitat:
So wie wohl jedes Framework auch: ein Controller, viele Views.
Aber das willst du ja nicht hören.
Wo genau steht, dass ich das nicht hören will?

Ein Controller für alle Views hört sich für mich sehr gut an und ist für mich bei kleineren Projekten auch immer die Regel gewesen.

Ich frag mich nur, wenn die ganze Anwendungslogik in nur einem Controller steckt, ist dass dann nicht etwas überladen bei mittleren bis großen Projekten?
Klar kann ich evtl mit Vererbung usw die Logik auf ein paar Klassen verteilen, allerdings ist das schon noch ein beachtlicher Teil...

Wie realisiert man denn dann diesen Controller?
Steckt da wirklich jede funktionalität der Views drin?
Will heißen, hab ich dann wirklich die Funktionen Login, Register, Logout usw alles über diesen zentralen Controller geregelt?

Oder ist es dann so geregelt, dass man Controller je "Kategorie" hat.
Beispiel:
Ich habe nen MemberController
Dieser regelt ua MemberlisteView, MemberProfileView usw.
NewsController
Dieser regelt news via xml, pdf usw.

Oder ich raff einfach das gesamte MVC iVm php noch nicht

Lg
Alex

Geändert von Alex04 (07.09.2010 um 06:32 Uhr).
Alex04 ist offline   Mit Zitat antworten
Alt 07.09.2010, 09:19  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Bei meinem Framework habe ich es so gelöst, dass jede "Action" ein View hat. Sie kann allerdings auch manuell ein View festlegen (So lassen sich z. B. zentrale Fehlerseiten anzeigen). Jedes View hat noch mal je nach Bedarf verschiedene Ausgabeformate - i. d. R. HTML. Allerdings sind auch json, xml, etc. möglich.

Zitat:
Ein Controller für alle Views hört sich für mich sehr gut an
Um Himmels Willen! Du willst eine komplette Applikation in einem Controller unterbringen?! Das ist ganz schlecht, weil die Übersicht flöten geht und Du keine Möglichkeit hast, die Applikation in mehrere Ebenen zu unterteilen (z. B. auth/login, auth/register - Stattdessen hättest Du so was wie auth_register, auth_login, usw.)

Ich frage mich gerade, warum Du Dir nicht einfach mal - wie bereits gesagt - fertige PHP-Frameworks anschaust und Dir anschaust, wie das dort gemacht wird. Du musst es ja nicht so wie diese umsetzen, aber ich denke, dann siehst Du erst mal die richtige Richtung..
xm22 ist offline   Mit Zitat antworten
Alt 07.09.2010, 09:51  
Benutzer
 
Registriert seit: 04.07.2009
Beiträge: 67
PHP-Kenntnisse:
Anfänger
haemoglobin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Alex04 Beitrag anzeigen
[...]

Ich frag mich nur, wenn die ganze Anwendungslogik in nur einem Controller steckt, ist dass dann nicht etwas überladen bei mittleren bis großen Projekten?

[...]
Dann hat man mehr als einen Controller.
haemoglobin ist offline   Mit Zitat antworten
Alt 07.09.2010, 12:17  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Oder ist es dann so geregelt, dass man Controller je "Kategorie" hat.
Beispiel:
Ich habe nen MemberController
Dieser regelt ua MemberlisteView, MemberProfileView usw.
NewsController
Dieser regelt news via xml, pdf usw.
Du widersprichst Dir doch !
Zuerst schreibst Du EINE view je Controller
und jetzt sind es doch mehrere.

Zitat:
Oder ich raff einfach das gesamte MVC iVm php noch nicht
Du denkst noch zu wenig in OOP und zu sehr prozedural
oder auch:
Du denkst zu sehr: das ist jetzt eine Memberseite.

Du lieferst aber keine Memberseite aus
sondern eine HTML-Seite die aus mehreren
Elementen besteht (Footer, Header, Werbebanner,
Contentbereich, "who is online"-Box, Kalender ...)


Zum groben Ablauf(MVC):
- es gibt einen Frontcontroller/Dispatcher/Router
der die Requests entgegennimmt und an den oder die
eigentlichen (Sub-)Controller weiterleitet.
Es können also mehrere (Sub-)Controller je Request
beteiligt sein.

Diese Subcontroller verarbeiten die Daten
interagieren mit dem Model (i.d.R. der Datenbank),
entscheiden welche View benötigt wird und
stellen die Ausgabedaten der View zur Verfügung.


Zum groben Ablauf(HMVC):
- es gibt einen Frontcontroller/Dispatcher/Router
der die Requests entgegennimmt und an den oder die
eigentlichen (Sub-)Controller weiterleitet.
Hier werden die benötigten Subcontroller anhand
eines Seitenobjekts ermittelt.
Das Seitenobjekt entspricht einem groben Template
in dem die Infos gepeichert sind welche Elemente
(Module) auf der Seite angezeigt werden.

Diese Subcontroller verarbeiten die Daten
interagieren mit dem Model (i.d.R. der Datenbank) und
stellen die Ausgabedaten der (Sub-)View zur Verfügung.

Nachdem alle Subcontroller angearbeitet sind
ruft der Frontcontroller die View auf
welche mit hilfe der Infos aus dem Seitenobjekt
die (Sub-)Views zu einer Ausgabeseite zusammensetzt
und ausgibt.


Zum groben Ablauf(APF):
Beim APF-Framework enthält das Seitenobjekt
eine baumartige Struktur so daß einzelne Elemente
ineinander verschachtelt sein können.
Jedes Element der Seite entspricht einer
MVC-Einheit.
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Alt 07.09.2010, 14:23  
Erfahrener Benutzer
 
Benutzerbild von splasch
 
Registriert seit: 05.01.2009
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
splasch kann nur auf Besserung hoffen
Standard

Ich würd ein HMVC Schema dem MVC vorziehen. Entuell das auch bei deinen Controller bedenken.

Mfg Splasch
splasch ist offline   Mit Zitat antworten
Alt 08.09.2010, 03:38  
Neuer Benutzer
 
Registriert seit: 01.09.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
Alex04 befindet sich auf einem aufstrebenden Ast
Standard

Hallo und vielen Dank für eure Geduld!

Ja ich hatte mich anfangs wohl missverständlich ausgedrückt.
Ein Controller regelt bei mir momentan nicht eine View, sondern eine Viewklasse. Beispielsweise ist die MemberView dann zuständig für Sachen wie showMemberList(), showOnlineMember() usw.

Danke @ Koala für deine ausführliche Erklärung, ich werde mich mal etwas näher mit HMVC beschäftigen um abwägen zu können was besser passt!

Vielen Dank,
Lg
Alex
Alex04 ist offline   Mit Zitat antworten
Alt 08.09.2010, 09:05  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Omg: 3:38.. Schläfst Du nicht?!

Und dann für jeden Bestandteil eine Funktion, die den html-Code erzeugt? Das haben wir bei meinem früheren Arbeitsgeber auch so gemacht, aber es ist eigentlich unnötig, weil Du das auch über eine einzige View-Klasse mit verschiedenen Templates machen kannst. Außerdem müsstest Du bei Deinem Ansatz bei jeder Erweiterung die jeweilige View-Klasse erweitern. Das ist nicht sehr schön.

Schau Dir da mal Zend_View an. Das ist in der Funktionsweise recht einfach zu verstehen.
xm22 ist offline   Mit Zitat antworten
Alt 09.09.2010, 03:52  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von xm22 Beitrag anzeigen
Omg: 3:38.. Schläfst Du nicht?!
Anhand dieses Threads zwischen 13:00 und 23:00
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Klasse aus einer anderen Klasse aufrufen Tobby PHP-Fortgeschrittene 7 14.07.2010 20:05
[Erledigt] Nur einer bestimmten Klasse Zugriff andere Klasse erlauben Turamisi Software-Design 2 20.02.2010 20:31
Mysql Klasse macht Probleme in verschachtelten / verzweigten SQL Abfragen litterauspirna PHP Tipps 2010 3 16.02.2010 12:54
[Erledigt] variable außerhalb einer klasse definieren - "var $variable" in klasse not taurus PHP Tipps 2009 14 05.12.2009 16:00
Klasse für Objekteigenschaft erzeugen? Asipak PHP-Fortgeschrittene 25 30.05.2009 19:45
[Erledigt] Eine klasse einbinden newWorldOrder PHP Tipps 2009 2 23.02.2009 19:32
Methode einer anderen Klasse aufrufen Luka PHP-Fortgeschrittene 15 09.11.2008 14:19
Klasse aus externer Klasse aufrufen kostja PHP Tipps 2008 8 07.08.2008 14:13
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
Rückgabewert auf einer Klasse anders als in der Klasse micbur PHP Tipps 2005-2 6 10.06.2005 15:06
Klassenobjet in anderer Klasse benutzen inu PHP Tipps 2004 6 19.09.2004 10:58
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ablauf mvc, php mvc subcontroller, mvc php pdf, php view klasse, mvc subcontroller php, php mvc seite beispiel menu footer content header, php subcontroller, php dispatcher-klasse, die den request entgegennimmt, mvc datenbankabfrage, php mvc klasse, mvc sub controller in view einbinden, besteht die view aus klassen php mvc, mvp mehrere daten klassen, mvc datenbank abfragen, mvc klasse überladen php, php mvc mehrere controllrer views, php mvc klassen, subcontroller mvc php, mvc erklärung, zitat mvc

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum