[PHP] Vraag over Model-View-Controller (MVC) design pattern

Pagina: 1
Acties:
  • 137 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 16:47
Ik ben sinds kort bezig met design patterns, en dan met name in combinatie met PHP om m'n php-brouwsels gestructureerder te krijgen. Daarom heb ik het Design Patterns boek van GoF besteld (komt hopelijk morgen binnen). Echter heb ik een vraag.

Ik ben nu met PHP bezig een eenvoudige site op te zetten (dynamisch uiteraard) met behulp van het MVC-pattern. Ik stuit hierbij echter op de limieten van mijn kennis omtrend dit pattern denk ik, en kan ook niet echt een antwoord vinden op GoT/Google. Het probleem is het volgende. Mijn site krijgt verschillende secties (Niews, foto-gallerij e.d.).
Is het correct dat ik hiervoor verschillende models maak (een NieuwsModel en een FotoModel bijvoorbeeld)? En moet ik dan alles aansturen met één controller, of met allemaal 'losse' controllers? Ik las een stuk over Java waar ze voor een hele applicatie slechts één controller gebruikten. Echter was het me daarbij niet helemaal duidelijk of er nou ook verschillende models werden gebruikt.

Ik las op sommige plaatsen dat je voor elke View een aparte controller nodig heb. Maar het lijkt me soms handiger om één controller voor verschillende 'views' te bouwen. Maar het zou ook kunnen dat ik teveel views bouw, en meer opties in één view moet bouwen. Bijvoorbeeld het weergeven van één nieuwsitem heb ik in een view (+controller) en het weergeven van een nieuwslijst heb ik in een view (+ weer een eigen controller) (beiden gebruiken één model).
Ik denk dat ik dat niet correct heb gedaan, en dat ik zowel het weergeven van een nieuwslijst als één individueel nieuwsitem in één view moet frotten met daarbij één controller die de gewenste uitvoer bepaalt.

Zit ik nou een beetje op het juiste spoor?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:32
Misschien iets offtopic, maar als jij die patterns die in dat GoF boek beschreven staan ten volle wilt kunnen gebruiken, dan zal je ze moeten gebruiken in een volledig OO taal, niet in een taal zoals PHP die niet alle noodzakelijke OO aspecten ondersteund.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Akerboom
  • Registratie: Juni 2001
  • Laatst online: 07-07 16:30

Akerboom

Codito, ergo sum

Volgens mij is de MVC gemaakt om verschillende representaties te geven met dezelfde ruwe data. Hier gaat het om verschillende data dus past MVC niet echt, want je wil er maar 1 representatie geven van de data.

Veel ervaring heb ik niet met Design Patterns en al helemaal niet met webscripting, al is de nieuwe PHP 5 wel de moeite waard :9

[ Voor 4% gewijzigd door Akerboom op 28-07-2003 18:08 ]


Acties:
  • 0 Henk 'm!

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 16:47
whoami schreef op 28 July 2003 @ 18:06:
Misschien iets offtopic, maar als jij die patterns die in dat GoF boek beschreven staan ten volle wilt kunnen gebruiken, dan zal je ze moeten gebruiken in een volledig OO taal, niet in een taal zoals PHP die niet alle noodzakelijke OO aspecten ondersteund.
Dat weet ik :)
Maar ik kan ook C++ en een beetje Java, dus dat is het probleem niet. Het topic op zich richt zich ff op PHP en design-patterns.
TormentoR schreef op 28 July 2003 @ 18:07:
Volgens mij is de MVC gemaakt om verschillende representaties te geven met dezelfde ruwe data. Hier gaat het om verschillende data dus past MVC niet echt, want je wil er maar 1 representatie geven van de data.

Veel ervaring heb ik niet met Design Patterns en al helemaal niet met webscripting, al is de nieuwe PHP 5 wel de moeite waard :9
Misschien was dat niet helemaal duidelijk, maar ik wil wel zeker verschillende representaties. Ik heb voor m'n Nieuws-sectie al views die uitvoer in XML-produceren en verschillende HTML-views. En ik denk dat het zeker wel goed mogelijk en nuttig is om MVC hiervoor te gebruiken. En ja, het gaat om verschillende type data (foto's en nieuws bijvoorbeeld) daarom dacht ik dat het wellicht ook praktischer is om meerder models te gebruiken (2 in dit geval) maar daar ben ik dus niet helemaal zeker van, vandaar dat ik het hier vraag. :)

Acties:
  • 0 Henk 'm!

  • Akerboom
  • Registratie: Juni 2001
  • Laatst online: 07-07 16:30

Akerboom

Codito, ergo sum

ik zou dan per data source (dus nieuws foto's etc.) een aparte MVC-pattern toepassen.

Acties:
  • 0 Henk 'm!

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 16:47
Maar is het nou ook zo dat het 'regel' is dat je per view één controller hebt? Of mag je ook een controller voor meerdere views gebruiken? Want volgens een reactie van iemand op een tutorial mocht dat niet

[ Voor 21% gewijzigd door Martin Sturm op 28-07-2003 18:45 ]


Acties:
  • 0 Henk 'm!

  • Akerboom
  • Registratie: Juni 2001
  • Laatst online: 07-07 16:30

Akerboom

Codito, ergo sum

alles mag, geen situatie is hetzelfde... maar ik zou er ook gewoon meerdere controllers op na houden. Je kan wel denken aan een extra overkoepelende controller voor de verschillende MVC-groepen.

Acties:
  • 0 Henk 'm!

Verwijderd

Misschien interessant voor je om eens te kijken naar:

http://www.phpmvc.net
http://phrame.sourceforge.net/

De eerste is eigenlijk de mooiste (komt zeer dicht bij java struts). Er zit ook een Digester klasse bij waarmee je op een event-based manier configuratiebestanden kunt inlezen.
Misschien dat je die kunt gebruiken om informatie aan een generieke controller toe te voeren (welke actionklasse te gebruiken voor een bepaalde http-post bijvoorbeeld).

Acties:
  • 0 Henk 'm!

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 16:47
TormentoR schreef op 28 July 2003 @ 19:03:
alles mag, geen situatie is hetzelfde... maar ik zou er ook gewoon meerdere controllers op na houden. Je kan wel denken aan een extra overkoepelende controller voor de verschillende MVC-groepen.
Ik heb er vanavond op de fiets (moest stuk fietsen naar vriendin :) ) nog ff over zitten denken, en toen had ik ook hetzelfde bedacht :D
Zo ga ik het denk ik ook doen.. ik was nu iets te 'netjes' aan het denken heb ik voor mezelf geconcludeerd :)
Verwijderd schreef op 28 July 2003 @ 19:17:
Misschien interessant voor je om eens te kijken naar:

http://www.phpmvc.net
http://phrame.sourceforge.net/

De eerste is eigenlijk de mooiste (komt zeer dicht bij java struts). Er zit ook een Digester klasse bij waarmee je op een event-based manier configuratiebestanden kunt inlezen.
Misschien dat je die kunt gebruiken om informatie aan een generieke controller toe te voeren (welke actionklasse te gebruiken voor een bepaalde http-post bijvoorbeeld).
Ik heb beide websites al bezocht, maar nog niet echt goed van dichtbij bekeken zeg maar.. staat wel op de planning voor de komende dag :) (vakantie is fijn _/-\o_ )

Acties:
  • 0 Henk 'm!

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 16:47
Ik heb inmiddels het boek binnen. Ook heb ik struts, phpmvc en phrame bekeken. Ik vind die laatste twee interessant, maar wel complex voor een simpele webpagina. Het ontwerpen van de controller is eigenlijk nog het ingewikkelst voor een website

Acties:
  • 0 Henk 'm!

  • Orphix
  • Registratie: Februari 2000
  • Niet online
IMHO mag een controller meerdere models gebruiken en een view meerdere controllers (al is dit laatst misschien niet zo netjes). Het zou immers onzin zijn wanneer de XML-versie en de HTML-versie ieder een andere controller aanroepen.

Wanneer van tevoren netjes use-cases zijn opgezet zal het er meestal op neerkomen dat met elke use-case een enkele controller overeenkomt.
Pagina: 1