eigen framework / beheersysteem
Pagina: « vorige 1 2 3 ... 7 8 9 10 11 12 volgende »
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?
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...
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.
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?
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.
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?
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.
Die definities kan je uit een configuratiebestand halen.
Ja, inderdaad kan ook... alleen die definities uit een configuratiebestand halen lijkt me niet heel fijn, omdat je dan in je controller niet direct kunt zien wat er wordt gevalideerd.
Dit is ook een optie:
$validator->validate(array('name', 'address', 'mail'), $_POST);
(waarbij veld 1 wordt gevalideerd als naam, veld 2 als adres en veld 3 als mailadres)
...of iets dergelijks. Enige nadeel van bovengenoemde is dat je de exacte benamingen moet kennen om vergissingen te voorkomnen, bijv. e-mail ipv mail.
Wat dat betreft lijkt dit me ook handig:
$validator->validateName($_POST['name']);
$validator->validateAddress($_POST['address']);
$validator->validateMailAddress($_POST['mail']);
etc.
Toevoeging op 24/01/2011 17:03:55:
En foute waardes in de validator class opslaan of iets dergelijks...
Dit is ook een optie:
$validator->validate(array('name', 'address', 'mail'), $_POST);
(waarbij veld 1 wordt gevalideerd als naam, veld 2 als adres en veld 3 als mailadres)
...of iets dergelijks. Enige nadeel van bovengenoemde is dat je de exacte benamingen moet kennen om vergissingen te voorkomnen, bijv. e-mail ipv mail.
Wat dat betreft lijkt dit me ook handig:
$validator->validateName($_POST['name']);
$validator->validateAddress($_POST['address']);
$validator->validateMailAddress($_POST['mail']);
etc.
Toevoeging op 24/01/2011 17:03:55:
En foute waardes in de validator class opslaan of iets dergelijks...
beetje offtopic, maar wat is de beste manier om data op te slaan in de database en die vervolgens weer uit te lezen?
is alleen mysql_real_escape_string voldoende bij het opslaan? of..? met uitlezen? addslashes, stripslashes, htmlent, htmlspec etc etc?
is alleen mysql_real_escape_string voldoende bij het opslaan? of..? met uitlezen? addslashes, stripslashes, htmlent, htmlspec etc etc?
Gewijzigd op 24/01/2011 17:53:25 door Jaron T
De beste manier lijkt het me om een query uit te voeren....
Als je je afvraagt hoe je veilig user input in die queries stopt, is het gebruik van mysql_real_escape_string idd het goede antwoord.
Als je je afvraagt hoe je veilig user input in die queries stopt, is het gebruik van mysql_real_escape_string idd het goede antwoord.
Zelf werk ik al een tijd met CakePHP. In cake heb je gewoon je layouts waarin je views ingeladen worden, voor elke functie/pagina een apparte view. Forms worden gemaakt met een formhelper classe, validatie gaat super makkelijk, je defineerd in je model de validatierules etc, en wanneer je in je controller zegt $this->Modelname->save($this->data) wordt de data automatisch gevalideerd en vervolgens opgeslagen. Velden die onjuist zijn ingevuld krijgen automatisch een error-classe mee etc, super handig. Ook bij het wijzigen van data werkt het ideaal, je set in de controller het id wat je wilt aanpassen ($this->Modelname->id = $id) en als je alles even op een juist manier doet worden je forms automatisch gevuld met de waardes uit de database.
Werkt super handig en niet al te moeilijk na te bouwen. Volg even dezetut en je komt al een heel eind.
Werkt super handig en niet al te moeilijk na te bouwen. Volg even dezetut en je komt al een heel eind.
Gewijzigd op 24/01/2011 19:41:48 door Mar cel
Ja die tut heb ik al eerder gezien... ben ik wel even zoet mee!
Die tutorial maakt alleen geen OOP framework, wat ik je toch aanraad.
Waarom is dit geen OOP eigenlijk? Er wordt toch gewoon met classes gewerkt?
Dat zegt nog niets, een classe is slechts een verzameling van functies. Het gaan om het denken in objecten.
Edit: je kan trouwens eerst nog eens http://www.phpro.org/tutorials/Model-View-Controller-MVC.html proberen:)
Maar zeg nou eerlijk, het is nu al een topic met 9 pagina's waar vrijwel nog niets gebeurd is (corrent me if im wrong), er wordt door de gebruikers met de moeilijkste termen gegooid. Zou je niet eerst even met de basis beginnen van het programmeren in OO, voordat je begint aan geavanceerde MVC-frameworken?
Edit: je kan trouwens eerst nog eens http://www.phpro.org/tutorials/Model-View-Controller-MVC.html proberen:)
Maar zeg nou eerlijk, het is nu al een topic met 9 pagina's waar vrijwel nog niets gebeurd is (corrent me if im wrong), er wordt door de gebruikers met de moeilijkste termen gegooid. Zou je niet eerst even met de basis beginnen van het programmeren in OO, voordat je begint aan geavanceerde MVC-frameworken?
Gewijzigd op 24/01/2011 21:35:32 door Mar cel
Moet je voor alles een object aanmaken om het OOP te laten zijn?
Wat mij overigens meteen brengt tot een andere leuke vraag...
Stel je wil een pagina tonen met daarop producten, laten we voor het gemak uitgaan van fietsen. De pagian is een overzichtspagina en toont van 50 fietsen de naan, de prijs en een plaatje. Hoe zou je deze fietsen dan tonen?
- van alle 50 fietsen een object maken? (waarin behalve de naam, prijs en plaatje ook een omschrijving en specificaties zijn opgenomen. Met andere woorden je laadt dus veel te veel informatie in)
- van alle 50 fietsen een object maken, maar niet alle gegevens inladen?
- gewoon de relevante gegevens uit de database ophalen en in een array zetten en dus niet met objecten werken?
Wanneer gebruik je OOP nou eigenlijk?
Wat mij overigens meteen brengt tot een andere leuke vraag...
Stel je wil een pagina tonen met daarop producten, laten we voor het gemak uitgaan van fietsen. De pagian is een overzichtspagina en toont van 50 fietsen de naan, de prijs en een plaatje. Hoe zou je deze fietsen dan tonen?
- van alle 50 fietsen een object maken? (waarin behalve de naam, prijs en plaatje ook een omschrijving en specificaties zijn opgenomen. Met andere woorden je laadt dus veel te veel informatie in)
- van alle 50 fietsen een object maken, maar niet alle gegevens inladen?
- gewoon de relevante gegevens uit de database ophalen en in een array zetten en dus niet met objecten werken?
Wanneer gebruik je OOP nou eigenlijk?
Haha Marcel, het lijkt erop alsof je een standaard antwoord herkauwt zonder überhaupt naar de code te kijken...
De dispatching - het oproepen van de juiste controller - gebeurt in een functie, niet in een klasse.
Ook wordt het 'model' gebruikt. Ik ken dat begrip als 'Domain Object', zeg User, of als 'Domain Model', het geheel van Domain Objects en dus de applicatie-specifieke code. Hier is het een Database Abstraction Layer... Raar...
De dispatching - het oproepen van de juiste controller - gebeurt in een functie, niet in een klasse.
Ook wordt het 'model' gebruikt. Ik ken dat begrip als 'Domain Object', zeg User, of als 'Domain Model', het geheel van Domain Objects en dus de applicatie-specifieke code. Hier is het een Database Abstraction Layer... Raar...




