[Framework] Functionaliteiten in een OOP-framework
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
Gewijzigd op 01/01/1970 01:00:00 door Tim
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
- 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.
Ow. Je mist ACL.
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).
- 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.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
Een goed framework bevat wat jij nodig hebt. Dat is ook de kracht van ZF, je kunt dingen niet gebruiken als je dat liever zelf doet.
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
@ 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.