OOP validators – класс для проверки параметров

tf

крылья рулят
texrdcom некто и спорить не будет что это единственное для тебя правильное решение...
а так каждый решается сам для себя. кто свое кто чужое. максимально удобное для него решение...
 

texrdcom

Новичок
tf
Я имел виду единственно правильное с предложенных
ну представь себе пишем мы декораторы с кучу обьектами
- классами для проверки и вот проходит месяц и нам надо поправить код я понимаю можно почитать help по классам страници 2-3 А в зендовском хватает нажать $inputFilter->(атоматом отображаеться методы фильтров в нормальной ide
и мы вписываем названия параметра)
Вродебы проще чем new object149(array(1, 32, 434 , 34, 34, 34)) :)
 

PartizaneN

I speak PHP
Как вам такая схема?

Для текста, например:
validator::add( 'name', TEXT, 1, 255 );
обязательный параметр
validator::add_nr( 'name', TEXT, 1, 255 );
необязательный параметр

Для рег выражения:
validator::add( 'link_url', REGEXP, "#^([\w$-.+!*'()@:?=&/;]+)$#" );

И все в таком духе...

после
PHP:
 if(validator::validated()){
...
}else{
   $t->assign('errors')=validator::errors();
}
Все поля подвязаны на локалайзер (имя поля формы - имя в локалайзере), так что эрроры выводит автоматом.
 

zerkms

TDD infected
Команда форума
Как вам такая схема?

Для текста, например:
validator::add( 'name', TEXT, 1, 255 );
обязательный параметр
validator::add_nr( 'name', TEXT, 1, 255 );
необязательный параметр
как, как, плохо
1. в этом случае (да и практически всегда) статика не рулит
2. зачем придумывать какой то там _nr если можно сделать правило для валидатора, что параметр обязательный
3.
validator::add( 'name', TEXT, 1, 255 );
странные какие то аргументы. что такое TEXT? что такое 1, 255 ? не удобнее ли разбить на 2 проверки - диапазона и того, что это текст (is_string() как я понимаю)
 

tf

крылья рулят
не считай те мен извращенцем, я просто лентяй
PHP:
$img_size=array();
$img_size['main']=array(500,500);
$img_size['m1']=array(211,117);
$item_form->add_object('img_size',array('type'=>'file','path'=>$item['file_path'],'img_size'=>$img_size));
PHP:
$item_form->add_object('pos',array('type'=>'text','size'=>10,'null'=>1,'int'=>1));
$item_form->add_object('date',array('type'=>'text','datetime'=>1));
$item_form->add_object('date2',array('type'=>'text',
                                    'datetime'=>1,
                                    'inside'=>'{Y}-{m}-{d} {H}:{M}:{S}',
                                    'outside'=>'{d}/{m}/{Y}'));
 

texrdcom

Новичок
честно скажу полная чушь писать в аргументах рег выражение
можно делать проще оформить функции в виде статики почему то не которые товарищи считают это бредом и кричат что надо писать так как они считают правильно - то есть делать слона муху. Поюзайте фреймворк зенда может осенит.
Все простое гениально - потому что работает и требуте минимум вода кода. Еще скажите что блокнот или фар для програмирования фореро :)
 

PartizaneN

I speak PHP
Автор оригинала: zerkms
как, как, плохо
1. в этом случае (да и практически всегда) статика не рулит
2. зачем придумывать какой то там _nr если можно сделать правило для валидатора, что параметр обязательный
3.
странные какие то аргументы. что такое TEXT? что такое 1, 255 ? не удобнее ли разбить на 2 проверки - диапазона и того, что это текст (is_string() как я понимаю)
1, 255 - значит от 1 символа до 255... второй аргумент - необязателен...
Но дело не в этом, а дело в том, что все валидаторы принимают разное количество аргументов...

какой то там _nr если можно сделать правило для валидатора, что параметр обязательный
ерунду говоришь... _nr нужно для того, чтобы, например, если в необязательное поле ввели больше символов чем положено - выдавалась соответветственная ошибка...
 

zerkms

TDD infected
Команда форума
ерунду говоришь... _nr нужно для того, чтобы, например, если в необязательное поле ввели больше символов чем положено - выдавалась соответветственная ошибка...
а без магических _nr это сделать нельзя, да?
1, 255 - значит от 1 символа до 255... второй аргумент - необязателен...
Но дело не в этом, а дело в том, что все валидаторы принимают разное количество аргументов...
вот про это я и говорю - зачем лепить ужасно сложные правила с разными аргументами, когда их же можно получить, комбинируя примитивные
 

_vampiro_

Новичок
zerkms
ИМХО ты не прав. :) Правила уже агрегированы из простейших. Другое дело, что вы сейчас спорите между вариантами:

PHP:
function check($some,param1,param2,param3){
    $some->add_check('text_length_min',param1);
    $some->add_check('text_length_max',param2);
    $some->add_check('field_type',param3);
}

.....
check($form_input_text_1,1,255,'is_string');
...
и
PHP:
...

    $form_input_text_1->add_check('text_length_min',1);
    $form_input_text_1->add_check('text_length_max',255);
    $form_input_text_1->add_check('field_type','is_string');
...
тут дело вкуса и частоты применения агрегированых правил, а разницы нема.
 
Сверху