MVC Frameworks
deze 'discussie' hier een topic over je favoriete MVC framework.
Zelf heb ik wat ervaring met het Zend Framework en bepaalde componenten zijn me zeer goed bevallen. Dit betreft onder andere Debug, Validation, Log en Mail. Minder tevreden ben ik over het hele MVC deel van het framework: onlogisch en onhandig.
Ook heb ik na positieve reviews gelezen te hebben heb ik wat door de source van CodeIgniter gelezen, maar dit was zo slordig OOP en had een rare interpretatie van MVC dat ik me er niet echt in verdiept heb.
Velen op het internet zijn razend enthousiast over symfony, maar ik wacht de release van versie 2 af, om geen dingen opnieuw te hoeven leren.
En heeft iemand (Niels ;-) ) nog briljante inzichten hierover die hij graag wil delen?
Toevoeging op 04/09/2010 19:30:09:
bump
Naar aanleiding van Zelf heb ik wat ervaring met het Zend Framework en bepaalde componenten zijn me zeer goed bevallen. Dit betreft onder andere Debug, Validation, Log en Mail. Minder tevreden ben ik over het hele MVC deel van het framework: onlogisch en onhandig.
Ook heb ik na positieve reviews gelezen te hebben heb ik wat door de source van CodeIgniter gelezen, maar dit was zo slordig OOP en had een rare interpretatie van MVC dat ik me er niet echt in verdiept heb.
Velen op het internet zijn razend enthousiast over symfony, maar ik wacht de release van versie 2 af, om geen dingen opnieuw te hoeven leren.
En heeft iemand (Niels ;-) ) nog briljante inzichten hierover die hij graag wil delen?
Toevoeging op 04/09/2010 19:30:09:
bump
nog 1 en de laatste bump
Wat is dan jouw visie van een kloppend MVC model? Hoe zou jij – om maar even een simpel voorbeeld te nemen – een gastenboek maken? Waar stop je je form in, hoe doe je de validatie, wat zit er in de controller en wat in de view?
Sommigen zeggen dat je Model alleen data opslag is (objecten en dergelijken) sommige zeggen dat het je data opslag controller is (verbinding en verwerken met database o.i.d.) sommigen zeggen dat je model het structuur van je programma bevat.
Zijn allemaal interpretaties, en allemaal hebben ze hun voor en nadelen.
Zelf gebruik ik vaak een MVC Observer pattern, waarbij mijn Model alleen data objecten zijn, mijn Controller gegevens wegschrijft en ophaalt, en de View voor het weergeven, met gebruik van de objecten.
De observer gebruik ik dan om te zorgen, dat als er nieuwe input is, dat iedereen er vanaf weet.
In PHP is dit niet echt handig, maar in talen als Java en C#, waar je niet met een page-refresh zit, is dit voor mij zeker een uitkomst.
Maar ook dit is weer een eigen interpretatie, en of die goed of fout is, daar durf ik niet over te oordelen, ik ben geen echte expert, maar ik vind mijn systeem lekker werken, het enigste nadeel is dat je een beetje snelheid verliest, omdat iedere Controller gaat kijken of hij iets met een wijziging moet doen.
Maar ook daar kan je optimalisaties voor inbouwen.
Voor de rest heb ik weinig ervaring met echte frameworks, voornamelijk omdat ik te vaak projecten heb lopen, waarvoor ik te weinig tijd neem om te experimenteren.
Nu breekt een iets rustigere tijd aan, dus ik ga wel beginnen met een framework, maar eerst alle pros en cons van allemaal afwegen, en alles even proberen, kijken wat ik lekker vind werken.
Controller en view lopen bij mij een beetje door elkaar. Controller is bij mij het 'entry point' zeg maar. Eventueel zit er nog een router voor, maar de controller bepaalt welke view er wordt aangemaakt, en of die wordt geprint. De view is meestal een template, met daarin weer andere views zoals een formulier. Een formulier is een eigen object, dat je initialiseert met een object uit het model, bijvoorbeeld een gastenboekbericht. Dat past hij dan direct aan, en met dat object communiceert hij of de waarden geldig zijn of niet. De controller kijkt nog even of het formulier is verstuurd en alle waarden geldig waren, en slaat dan het object opnieuw op door tegen het model te zeggen dat 'ie dat ding op moet slaan.
Nou ja, dat is het model dat ik soms gebruik. Ik heb nu ook iets anders, en dat heeft een hele structuur aan objecten wat ik de view noem. Dat is nu net zo'n ding als m'n model, met een toegangspunt waarvandaan je de menu's, titels, etc aan kan passen. De controller praat dan alleen nog maar tussen het model en de view, zowel het model als de view worden al automatisch geïnitialiseerd. Zou de controller leeg zijn, dan krijg je een lege site, maar niet een blanco pagina zeg maar.
En zo experimenteer ik wat verder.
Ik ben nu een klein MVC-achtig frameworkje aan het maken dat ik wil gaan gebruiken voor een huidig en toekomstige betaalde projecten. Dit zijn kleine websites met wat extra's als lijstjes en dergelijke en moet een CMS zijn. Omdat ik veel CMS'en vaak lomp en erg lastig aan te passen vind, heb iets anders geprobeerd. Elke pagina is een klasse in een bestand. Bij het maken van een nieuwe pagina wordt dus een nieuw bestand aangemaakt dat alleen een name property heeft en verder een abstracte pagina uitbreidt. Zo is het geheel dynamisch en toch eenvoudig van een simpele pagina uit te breiden tot ingewikkelder functionaliteiten. De pagina's zijn active records.
Het enige waar ik nog mee zit is hoe de administratie hiermee moet worden geïntegreerd. Ik denk nu aan onbewerkbare admin pagina's en dat de pagina-specifieke formulieren en afhandeling door de desbetreffende pagina worden zelf gerenderd. Een alternatief is dat bij elke pagina een formulier-klasse hoort. Dit is wel iets minder generiek. Heeft iemand een goed idee hierover?
@Jelmer, kan je dat laatste model iets meer toelichten? Nu snap ik er niet veel van.
Heb hiervoor wel vaak met Hibernate gewerkt in Java, en dat werkt ook heerlijk, hoewel de eerste keer opzetten echt een pain-in-the-ass kan zijn.
Dat ik toen keek naar Doctrine, (1.0 of 1.1 in die tijd), miste het nog ontzettend veel mogelijkheden, en was het te incompleet, het ziet er nu al stukken beter uit. als k dan snel een paar voorbeelden bekijk.
Ik ga er even mee spelen, kijken of het werkt.
Quote:
Dit betreft onder andere Debug, Validation, Log en Mail. Minder tevreden ben ik over het hele MVC deel van het framework: onlogisch en onhandig.
Waarom onlogisch en onhandig? Kan je dit toelichten? Ik gebruik zelf maar een aantal onderdelen van Zend Framework. Gewoon omdat de helft gewoon te veel werk is en het op de 'normale' manier sneller en efficiënter gaat. ( BV: Zend_Form )
Quote:
Velen op het internet zijn razend enthousiast over symfony
Dat kan ik alleen maar beamen. Vele male beter dan Zend Framework.
Quote:
source van CodeIgniter gelezen
Toen ik hoorde dat het niet in PHP5 was geschreven ( Wel ondersteuning trouwens... ) heb ik niet eens de moeite genomen om het te downloaden.
Quote:
En heeft iemand (Niels ;-) ) nog briljante inzichten hierover die hij graag wil delen?
Briljant? Uhh nee.. Wel heb ik nog een paar ideeën die met een aantal mensen uitgevoerd kunnen worden, maar dat bedoel jij niet..:)
Quote:
Zelf gebruik ik vaak een MVC Observer pattern
Daar ben ik zelf ook voorstander van. Zeker met de taal JAVA is het observer pattern heel veel gebruikt en wordt dat natuurlijk nog steeds.
Quote:
En zo experimenteer ik wat verder.
En dat doet iedereen.. Er zijn niet echte regels waar je jezelf aan moet houden.
Quote:
Ik ben nu een klein MVC-achtig frameworkje aan het maken
Kan je die eens delen?
Quote:
Omdat ik veel CMS'en vaak lomp en erg lastig aan te passen vind
Daar kreeg vanmorgen in de bus onderweg naar school al zeg ik het zelf een briljant idee over. Maar omdat ik nu nog op school zit kan ik even niet een uur achter elkaar gaan typen..:) Dit komt morgen avond wel.
Quote:
Heeft iemand een goed idee hierover?
Dat heb ik zeker, maar daarvoor moet je even wachten..>:)
Gewijzigd op 09/09/2010 19:11:23 door Niels K
- functionaliteiten: Zend Framework
- kant-en-klaar: Symfony
- snel: Kohana
Persoonlijk gebruik ik mijn eigen framework, welke nu in productie draait. Zeer snel, modulair en precies zoals ik het wil. Ik ben geen persoon die via de command line alle scripts automatisch wil laten aanmaken. Verder vind ik Zend te log, en andere geen nette codestijl hebben. Dan zit er niets anders op dan je eigen te ontwerpen.
Mocht je hier tijd voor hebben; gelijk doen. Een prima manier om geconfronteerd te worden met design issues, patterns en dergelijke.
Gewijzigd op 09/09/2010 21:55:18 door Mark PHP
Quote:
En heeft iemand (Niels ;-) ) nog briljante inzichten hierover die hij graag wil delen?
Quote:
Omdat ik veel CMS'en vaak lomp en erg lastig aan te passen vind
Twee dingen:
- Ik zou graag met een aantal mensen een CMS willen bouwen.
- Dat CMS moet dus juist niet lastig zijn en gemakkelijk te implementeren zijn.
Ik heb daar een aantal ideeën over, maar ik heb even geen tijd om die neer te zetten. Ik zal zodra ik er tijd voor heb ( volgende maand ) een nieuw topic voor openen en mijn mening daar plaatsen.
Gr
Niels Kieviet op 18/09/2010 18:16:05:
- Ik zou graag met een aantal mensen een CMS willen bouwen.
- Dat CMS moet dus juist niet lastig zijn en gemakkelijk te implementeren zijn.
Ik heb daar een aantal ideeën over, maar ik heb even geen tijd om die neer te zetten. Ik zal zodra ik er tijd voor heb ( volgende maand ) een nieuw topic voor openen en mijn mening daar plaatsen.
Gr
- Ik zou graag met een aantal mensen een CMS willen bouwen.
- Dat CMS moet dus juist niet lastig zijn en gemakkelijk te implementeren zijn.
Ik heb daar een aantal ideeën over, maar ik heb even geen tijd om die neer te zetten. Ik zal zodra ik er tijd voor heb ( volgende maand ) een nieuw topic voor openen en mijn mening daar plaatsen.
Gr
Je bedoeld dus Drupal?
Zo ongeveer.. alleen dan een geheel andere aanpak..