Hmmm, laat ik de vraag toch maar eens stellen. Ik wil graag een eigen framework / beheersysteem maken. De bedoeling is dat ik als het systeem klaar is heel makkelijk een website kan maken waar meteen al een standaard cms gedeelte in zit.

Ik ben al begonnen met een framework en ik maak daarbij gebruik van Zend Framework, maar nu vraag ik me het volgende af. Ik heb behoorlijk wat PHP kennis en ervaring inmiddels, maar ik heb hier geen opleiding voor gehad. Ik wil het mezelf dan ook altijd zo makkelijk mogelijk maken als ik aan het programmeren ben. Voorbeeld, als ik een databasequery wil uitvoeren dan wil ik niet een hele query in te hoeven typen, maar wil ik simpele functies kunnen gebruiken, bijvoorbeeld: $database->setTable('tabel') en $row = $database->select('naam') etc.

Ik gebruik Zend Framework met name omdat ik mooie routes kan maken, bijvoorbeeld www.mijnsite.nl/kantoorartikelen/nietmachine in plaats van www.mijnsite.nl/?category=4&product=2.

Ook vind ik het handig dat ik in Zend Framework een route makkelijk kan koppelen aan een controller en een actie. Daarnaast gebruik ik de MVC structuur (modules), de Zend_Registry functie om iets op te slaan en gebruik ik de caching functie voor het cachen van gegevens.

Ik gebruik Zend Framework dus voornamelijk voor:
- maken van mooie routes
- routes koppelen aan controller en actie
- MVC structuur (modules)
- Zend_Registry om variabelen op te slaan
- Caching

Voor de rest gebruik in Zend Framework eigenlijk niet. Ik weet dat er heeeel veel mogelijkheden in Zend Framework zitten, maar ik ben niet iemand die dat allemaal wil uitvogelen, en ik wil toch altijd graag mijn eigen code schrijven zodat ik precies weet wat de code doet en hoe deze in elkaar zit (zodat het voor mijzelf logisch is en makkelijk te gebruiken).

Nu vraag ik me 2 dingen af:
1) is het voor mij eigenlijk wel zinvol om Zend Framework te gebruiken aagezien ik er niet heel veel mogelijkheden van benut.
2) zijn de 5 functies waar ik gebruik van maak (makkelijk) ook zelf te maken of is dat heel erg ingewikkeld?

Wat raden jullie aan? Zend Framework blijven gebruiken ook al gebruik ik er maar weinig van? Of toch zelf mijn eigen functies maken en Zend Framework niet meer gebruiken? Ik stel deze vraag ook omdat Zend Framework zo'n 23mb aan serverruimte in beslag neemt.

Jeessszzzz, lekker ingewikkeld :)

Wat doet die validate functie hier?

$validator->validate($_POST['email'], 'email');

Is 'email' als 2e parameter het type waarop gevalideerd dient te worden?
Ja. Had het even zo verzonnen. Je kan ook met objecten of constanten werken, maakt niet zo veel uit.

Maar die eerste methode is niet zo moeilijk toch? Gewoon een validatieklasse maken die exceptions gooit bij fouten. Dan moet je nog even nadenken hoe je de foutmelding die weergegeven moet worden dan integreert, maar dat moet lukken. Je kan het beste een goed aangepaste Exception klasse maken.

De tweede methode is wel echt ingewikkeld ja...
Die 1e methode zou inderdaad wel lukken... maar als er een exception gegooid wordt dan stopt het systeem in principe toch? Dus stel e-mail klopt niet... dan komt er een melding: ongeldig mailadres of iets dergelijks... maar daarna stopt alles, of niet? Of toon je dan ook weer het formulier?
Nee, juist niet. Dat is het mooie van Exceptions. Als er een exception wordt gegooid, gaat de compiler net zo lang 'omhoog' tot er een catch blok wordt gevonden. In dit geval is dat al in dezelfde functie. In het catch blok kan je dan de Exception gebruiken, hier om de foutmelding uit te halen om deze weer te geven.

Dat is het voordeel van exceptions boven errors.
Hmmm... oke... help me even...

Je kunt dus zowel Exceptions als Errors throwen? Begrijp ik dat goed?

En een Error voert een die() uit na het catch blok, maar de Exception gaat door? Begrijp ik het zo goed?
Ja, dat kan. Errors heb je alleen niets aan, want zelfs als je ze verwacht, kan je er niet mee omgaan. Exceptions daarentegen zijn wel handig. Een try-catch blok om je hele applicatie heen vangt alle onverwachte exceptions op (kan ook met een error_handler), maar verwachte fouten (zoals een fout met de validatie) kan je zo opvangen, dat je er omheen kan werken.

Hier geef je dan een foutmelding. Soms weet je dat een username al bestaat (bij een unique veld) of dat een bestand niet bestaat. Zo met uitzonderingen omgaan is veel handiger dan met error properties en heel veel 'false' werken.
Uhm oke... maar voor een Error gebruik je toch niet een try en catch blok? Of wel?

Maar in jouw voorbeeld... stel het emailadres is fout...
Hoe handel je dit dan af? Als ik bijv. nu een formulier heb en mensen vullen bepaalde dingen niet goed in, dan verschijnt het formulier opnieuw en zijn de verkeerd ingevoerde velden rood gemarkeerd. Hoe zou dit dan werken met exceptions? Stel, e-mailadres klopt niet... het catch blok wordt getriggerd... oke je zou nu nogmaals het formulier kunnen tonen waarbij het verkeerd ingevoerde veld rood is gemarkeerd... maar eventueel andere verkeerd ingevulde velden worden nu niet gemarkeerd... of wel?
Je hebt gelijk. Je kan beter in 1 call valideren door met een array te werken. In die methode worden dan de errors verzameld en als ze er zijn, wordt er 1 exception gegooid.
Dat lijkt me inderdaad beter :)
Je kan eventueel ook in je validator groepen definiëren, zodat je met $validator->validate('new_user', $_POST); in 1x klaar bent.

Die definities kan je uit een configuratiebestand halen.

Reageren