eigen framework / beheersysteem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 ... 7 8 9 10 11 12 volgende »

Ozzie PHP

Ozzie PHP

24/01/2011 15:11:37
Quote Anchor link
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?
 
PHP hulp

PHP hulp

23/11/2024 22:25:06
 
Pim -

Pim -

24/01/2011 15:20:20
Quote Anchor link
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...
 
Ozzie PHP

Ozzie PHP

24/01/2011 15:26:45
Quote Anchor link
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?
 
Pim -

Pim -

24/01/2011 15:51:28
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

24/01/2011 16:00:12
Quote Anchor link
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?
 
Pim -

Pim -

24/01/2011 16:22:17
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

24/01/2011 16:32:06
Quote Anchor link
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?
 
Pim -

Pim -

24/01/2011 16:45:54
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

24/01/2011 16:47:54
Quote Anchor link
Dat lijkt me inderdaad beter :)
 
Pim -

Pim -

24/01/2011 16:52:22
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

24/01/2011 17:02:19
Quote Anchor link
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...
 
Jaron T

Jaron T

24/01/2011 17:48:18
Quote Anchor link
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?
Gewijzigd op 24/01/2011 17:53:25 door Jaron T
 
Pim -

Pim -

24/01/2011 18:03:11
Quote Anchor link
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.
 
Mar cel

Mar cel

24/01/2011 19:38:53
Quote Anchor link
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.
Gewijzigd op 24/01/2011 19:41:48 door Mar cel
 
Ozzie PHP

Ozzie PHP

24/01/2011 20:32:28
Quote Anchor link
Ja die tut heb ik al eerder gezien... ben ik wel even zoet mee!
 
Pim -

Pim -

24/01/2011 21:04:45
Quote Anchor link
Die tutorial maakt alleen geen OOP framework, wat ik je toch aanraad.
 
Ozzie PHP

Ozzie PHP

24/01/2011 21:18:36
Quote Anchor link
Waarom is dit geen OOP eigenlijk? Er wordt toch gewoon met classes gewerkt?
 
Mar cel

Mar cel

24/01/2011 21:31:42
Quote Anchor link
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?
Gewijzigd op 24/01/2011 21:35:32 door Mar cel
 
Ozzie PHP

Ozzie PHP

24/01/2011 21:38:00
Quote Anchor link
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?
 
Pim -

Pim -

24/01/2011 21:39:08
Quote Anchor link
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...
 

Pagina: « vorige 1 2 3 ... 7 8 9 10 11 12 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.