I will commit some code next week and I think everything will be more clear.
-- Fabien Potencier Sensio CEO - symfony lead developer http://www.sensiolabs.com/ http://www.symfony-project.com/ Sensio Labs Tél: +33 1 40 99 80 80 Matthias N. wrote: > Why not making validate() similar to good old sfValidator->execute(): > > validate($value, &$sanitizedValue); > > returns true, if this validator executes successfully, otherwise false > > and use a new getErrors() method if you need multiple error messages > > No need for exceptions - but hey.. I also have no problems with > exceptions - simply do it ;-) > > Regards, > Matthias > > > > On 30 Sep., 20:59, Fabien POTENCIER <[EMAIL PROTECTED]> > wrote: >> Hi all, >> >> I'm working on the new validation system and I want your thoughts about >> a design decision I have to take. >> >> Let's take a string validator: >> >> $v = new sfValidatorString(array('max_length' => 2)); >> >> Then let's try to validate a string: >> >> $ret = $v->validate('t'); >> >> Here, $ret is 't'. >> >> Now, if I do: >> >> $ret = $v->validate('foo'); >> >> What happens? >> >> 1 - The validator throws a sfValidatorException: >> >> throw new sfValidatorException('String is too long'); >> >> 2 - The validator returns a sfValidatorError object: >> >> return new sfValidatorError('String is too long'); >> >> 3 - The validator returns false or another "magic" value: >> >> return false; >> >> 3 is not very good because then I can't return false as a valid value >> (same goes for null or whatever other value). >> >> My preference goes to the exception but PHP exceptions are quite >> inflexible, the message has to be a string, so if I want to return >> several error messages, I can't: >> >> throw new sfValidatorException(array('String is too long', 'foo is >> not a valid string')); >> >> Here is a typical usage: >> >> try >> { >> $ret = $v->validate('foo');} >> >> catch (sfValidatorException $e) >> { >> // do something with the error >> >> } >> >> The sfValidatorError usage looks good but the user code looks less "clean": >> >> $ret = $v->validate('foo'); >> if ($ret instanceof sfValidatorError) >> { >> // do something with the error >> >> } >> >> It's less clean because if you forget to check the return value, you can >> have some weird behaviors in your code and debugging can then be much >> harder. >> >> Thanks for your ideas, >> Fabien > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "symfony developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/symfony-devs?hl=en -~----------~----~----~----~------~----~------~--~---
