- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
$id = $fInt->filter($this->_getParam('id'));
$sort = $fInt->filter($this->_getParam('sort'));
$c_name = $this->mbtrim($fStr->filter($this->_getParam('c_name')));
$c_shortname = $this->mbtrim($fStr->filter($this->_getParam('c_shortname')));
$email = $this->mbtrim($fStr->filter($this->_getParam('email')));
$d_firstname = $this->mbtrim($fStr->filter($this->_getParam('d_firstname')));
$d_lastname = $this->mbtrim($fStr->filter($this->_getParam('d_lastname')));
...
И так около 20 строк. Какие есть хорошие варианты фильтровать множество разнотипных данных?
user654321 15.09.2010 17:07 # 0
asfalanaft 15.09.2010 23:26 # 0
user654321 16.09.2010 08:06 # 0
asfalanaft 16.09.2010 09:15 # 0
user654321 16.09.2010 11:34 # 0
Да, и фильтрация выглядела бы, как с обычной формой:
asfalanaft 16.09.2010 11:42 # 0
user654321 16.09.2010 12:27 # +1
Oops 16.09.2010 11:17 # 0
user654321 16.09.2010 11:22 # +1
Oops 16.09.2010 11:26 # 0
Мистер Хэнки 15.09.2010 20:43 # +3
asfalanaft 15.09.2010 23:27 # −4
asfalanaft 16.09.2010 08:49 # −4
Мистер Хэнки 16.09.2010 09:47 # +1
Короче и нагляднее же! нет?
asfalanaft 16.09.2010 10:17 # −2
sectus 16.09.2010 04:41 # 0
?
asfalanaft 16.09.2010 08:49 # −2
Oops 16.09.2010 11:05 # +1
asfalanaft 16.09.2010 11:37 # −2
Oops 16.09.2010 11:54 # 0
asfalanaft 16.09.2010 11:57 # −2
Oops 16.09.2010 14:28 # 0
Lure Of Chaos 16.09.2010 17:07 # 0
eth0 16.09.2010 18:43 # 0
Неоптимально, расширябельно, ООП.
asfalanaft 16.09.2010 19:17 # 0
xXx_totalwar 16.09.2010 19:30 # +1
какая загвоздка, вот λPω в хаскелле - это загвоздка, ага, а тут просто динакомикоговно.
asfalanaft 16.09.2010 20:14 # 0
eth0 17.09.2010 21:58 # +1
В моём варианте я постарался разнести всё на части. Все типы определяются в одном месте, рядом с данными. Обработка идёт в другом. Ввести новый тип - не проблема. $this с собой таскать не надо, он в объекте.
Главный плюс, как мне кажется - аргументов у функции может быть хоть сорок, но следить за ними не столь сложно.
Если такое решение кажется слишком запутанным при использовании, можно продумать автоматизацию. Например, явно указать тип в названии переменной. Типа: i_int, s_nickname, i_somevalue. Обработка упрощается, тип жёстко привязан, нет необходимости хранить отдельно.
Можно пойти ещё дальше. Например, если параметр является допустимым числом, то к нему применяется только обработка на числа. Иначе - на строки. Впрочем, я придерживаюсь мнения, что входные переменные, откуда бы они не пришли, должны жёстко иметь заданный программистом тип.
Неудобно, конечно, что типы динамические и чаще всего привязаны к строковому. От пользователя из $_GET, насколько я помню, приходят только строки.
Просто так сразу и из головы писать код глупо. Код с копипастой неэффективен. За счёт процедур можно объединять куски в блоки, дабы не было копипасты. Объекты разделяют данные меж своими методами. Но основой основ является инженерная идея (как бы ни звучало смешно это касательно php). Без понимания того, что и как будет работать, какие данные и как мы хотим увидеть - толку не будет.
asfalanaft 18.09.2010 10:11 # 0