Een korte vraag: Aangezien ik bezig ben met een eigen frameworkje (zoals wel meer mensen), zou ik graag van jullie horen welke functionaliteiten er, volgens jullie, echt niet mogen missen in een framework.
Nog even een rijtje van dingen die ik tot nu toe heb (enkele zijn niet echt functionaliteiten, maar geven meer een beeld van wat ik tot nu toe heb):
- MVC Framework, dus gebruik van views met:
- Toevoegen van losse headers
- Toevoegen van losse footers
- Toevoegen van losse pagina-elementen
- Templates geschreven in PHP
- 'Variabelen' gebruiken per template en algemene 'variabelen'
- Formulieren
- Makkelijk te gebruiken errors
- Registry met daarin onder andere:
- Configuratie
- Database
- Authenticatie
- Router, dus makkelijk URL's samenstellen
- Modulaire opbouw, dus makkelijk nieuwe functionaliteiten toevoegen
Op mijn todo-list:
- Validatie
- Formulieren afmaken
Alvast bedankt voor jullie antwoord,
Tim
?
Onbekende gebruiker
04-05-2009 21:38
Hoe goed ben je in OOP?
Heb je al eens wat onderzoek gedaan naar MVC?
Wat ik een beetje troep vind is:
Tim schreef op 04.05.2009 14:33
, dus gebruik van views met:
- Toevoegen van losse headers
- Toevoegen van losse footers
- Toevoegen van losse pagina-elementen
- Templates geschreven in PHP
- 'Variabelen' gebruiken per template en algemene 'variabelen'
- Makkelijk te gebruiken errors
Dat is allemaal niet nodig / niet relevant / kort door de bocht / heb je al.
Ben al enige tijd bezig met OOP en MVC pattern. Misschien komt het wat verkeerd over, maar wat ik bedoelde was:
Er is één algemene 'view holder' waarin andere verschillende type 'views' kunnen worden toegevoegd. Deze kunnen van het type HTML, XML, PDF, etc. zijn, en zijn allemaal extends van een algemene 'view'. In de HTML-views wordt bijvoorbeeld een template opgegeven waarin wat opmaak staat, en wat data uitgelezen wordt. Deze data kan door de models / controllers geset zijn, en dan wel zo dat ze ofwel door slechts één view te bereiken zijn, ofwel algemeen beschikbaar zijn. Naar mijn weten is dit een goede manier van het gebruiken van de 'V' in MVC.
Mijn wedervraag aan jou is dus: Waarom is dit niet relevant / niet nodig / kort door de bocht / heb je al?
En wat bedoel je precies met dat ACL, in principe heb ik al access control ( / authenticatie).
Om maar eens wat te noemen:
- cache
- logging
- i18n
- pluginsysteem
Daarnaast zie ik dat je router los van je MVC interpretatie ziet, dit lijkt me niet juist. Voor de rest kan je nog een aantal handige classes erbij maken, het is niet voor niets een framework.
En inderdaad, als je dit een beetje goed wilt doen moet je wel wat van OOP weten. Tevens zal je naar bestaande frameworks moeten kijken wat die allemaal hebben.
Je kan ook eens proberen te spelen met een stel van de uitstekende mvc gebaseerde frameworks. En daarna eens kijken hoe je het eventueel zelf beter zou doen.
Het voordeel is dat je
1. Al het bovenstaande al mee hebt gekregen
2. Niet zelf het wiel hoeft uit te vinden
3. Je kan leren van mensen die het al eerder gedaan hebben
4. Je zelf een goed antwoord kan geven op hoe het beter kan en het dan zelf kunt schrijven.
Het nadeel is:
- Je moet je voegen naar andermans regels, en andermans code eerst moet begrijpen
Een greep uit termen waar je van kan leren:
- Symfony (goede documentatie)
- CodeIgniter
- Zend Framework
- (CakePHP)
Of zinnige onderdelen voor zelfbouw (beide ook ondersteund door symfony):
- Doctrine (zeer aardig ORM framewerk voor php, zeer goede ervaringen mee)
- Propel
Bedankt voor jullie opmerkingen. Ik ga het allemaal eens rustig bekijken en eventueel toevoegen aan mijn framework.
@ Aqirre:
Waarom is het fout als ik de router als losse class heb? Het is gewoon een apart onderdeel van mijn framework en kan (met scheiding van belangen) niet worden opgenomen in een andere class of verder worden gescheiden.
Omdat, mijn insziens, de Router onderdeel is van MVC (samen met o.a. Request, FrontController, Dispatcher etc.). Maar wellicht heb jij dit iets anders geimplementeerd (wat prima kan, er leiden meer wegen naar Rome). In dat geval vind ik de keuze voor de naam Router overigens wel wat ongelukkig.