![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Поводом послужила вот эта тема вот эта тема
Разумеется, такая простыня одинаковых операторов не мила сердцу настоящего программиста. И мы хотим её оптимизировать. И написать какой-нибудь код покрасивше, который обрабатывал бы входящие переменные. при всей очевидности проблемы, хороших кодов я в своей жизни не встречал. В своих собственных скриптах я использую менее идеологически правильные, но более простые конструкции. Давайте напишем хороший код приема внешних переменных. Главное условие - функция должна быть простой! Она должна просто читаться и пониматься. Если это будет класс на три страницы, то никто никогда не будет в нем разбираться. Я понимаю, что большинству посетителей форума все равно, что копировать - хоть сто строчек, хоть одну. И смысл даже одной строчки, типа while($row=mysql_fetch) от многих ускользает. Но все же, давайте делать как можно проще. Как минимум, ошибок будем меньше. Очевидно, что это должна быть функция, которая принимает в качестве аргумента массив с именами разрешенных переменных. Пусть эти имена будут ключами, а значениями - что с переменной делать. Ну, тип, к которому привести - это понятно Дефолтное значение. Источник - гет, пост, кука. Чем обработать? вот здесь главное - не переборщить. что может понадобиться сделать со входящими переменными? может, ничего? все равно массив сложноватым получается... |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
1. Свой код покажите для начала.
2. Полная, т.е. пакетная, обработка ВСЕХ входных параметров - технлогическая ошибка. Все параметры где-то так или иначе должны храниться "сырыми". Размер файла - не показатель качества/не качества. Показатель - реализации возложенных функциональных функций и оптимальность сего процесса... Тема бред по сути в любом случае, т.к. вся обработка входных данных так или иначе зависит от конкретной решаемой задачи... |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
можно её формализировать. обработку-то. ты чего? 0_о речь о подходе. можно в конце-концов вообще без кода обойтись. Добавлено через 1 минуту и 35 секунд Feldmarschall, мне кажется, лучше не пихать массив и возвращать массив, а передавать имя с параметрами и получать значение |
|||
|
||||
| Feldmarschall |
|
||||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Черт его знает.
Не стопроцентная применимость не может служить поводом вообще не решать задачу. В моих скриптах обычно все так и есть - обработкой входящих данных занимается тот код, который с ними работает... Но централизованность - тоже хорошая штука. Как хорошо в других языках - в секции Var определил все переменные, и дальше работаешь спокойно. Может, как типовое оставить таки простынку:
Добавлено @ 14:08 skyboy, что-то вроде такого:
? Это гораздо, гораздо лучше. Избавляет от ужасных повторений в первом варианте, но при этом не с помощью чудовищного $var2=isset($_POST['var2'])... Добавлено @ 14:10 С одной стороны - да. У меня, как и пишет Mal Hack, обработкой разных переменных занимаются разные участки кода. К примеру, POSt идет прямиком в функцию, формирующую строку set для запроса. Но с другой стороны, инициализация и обработка - это разные вещи. Мы сейчас говорим об инициализации. И предварительная обработка массива $_POST, наверное, не помешает... просто хочется навести какой-то порядок в инициализации переменных и в частности - принимаемых снаружи. что-то надо отвечать таким новичкам, у которых $$k=$v. Это сообщение отредактировал(а) Feldmarschall - 11.7.2008, 14:23 |
||||
|
|||||
| sTa1kEr |
|
||||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
За что я не люблю PHP, так это за то что в нем все уже придумано и изобретено 1000 и один раз еще в позапрошлом столетии.
Feldmarschall, 90% из того, что вы предложили реализовать, уже есть в PHP. Причем условие KISS полностью удовлетворено. Да, я говорю про http://php.net/filter Что же дают эти функции?
По моему, все очень лаконично и просто. Теперь о недостатках, на мой взгляд. 1. Отсутствие возможности задавать дефолтное значение. 2. Формировать список полей в массиве не очень удобно. Так вот, можно было бы написать обертку для этих функций, реализовать дефолтные значения, ооп подход и было бы в точности то, что вы предлагаете. Добавлено @ 01:56 Как бы я это реализовал для начала:
Это сообщение отредактировал(а) sTa1kEr - 12.7.2008, 02:02 |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Это только в делфи, в сях такого нет. Причем на счет такой жесткой структуризации кода программы многие против... Си в этом плане в 1000 раз удобнее, уж по работе с типами 100%. Если нужно, чтобы некоторые значения как бы всегда были заданы или имели какое-то фиксированное значение, можно заюзать arra_walk, куда включить либо свою функцию, либо через create_function. Но пу сути это лишнее, т.к. что проверять пустое значение, что isset все равно, та же песня, только в другой тональности... Это ничем не облегчит, наоборот, увеличит кол-во операций. Хотя, в редких случаях, такое действительно надо, но в очень редких. |
|||
|
||||
| Glip |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 473 Регистрация: 30.12.2006 Репутация: 7 Всего: 18 |
||||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |