[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Класс валидации данных
Страницы: 1, 2, 3
volter9
twin
Цитата (twin @ 1.02.2015 - 11:18)
Не программных решений. А фреймворков.

Пффф:
https://packagist.org/ (тут целая куча классов которые следуют PSR-0, PSR-1),
https://packagist.org/packages/monolog/monolog (logger, PSR-0, PSR-1),
https://packagist.org/packages/machuga/authority (авторизация, PSR-0, PSR-1),
и т.д.

Это я к тому что PSR-0, PSR-1 используют не только для фреймворков, но и для других компонентов которые могут пригодится на сайте, т.е. программных решений.


_____________
Мой блог
twin
volter9
И что))) Как расшифровывается FIG в курсе? Расскажу, чтобы не гуглить. Framework Interop Group. Группа взаимодействия (совместимости) фреймворков. И именно для них он и разрабатывался. Конечно, сейчас многие присели на PSR.

Но кстати, и сейчас это вовсе не догма. Эти рекомендации изменяются и расширяются. Любой человек может принять участие, отправив им свои пожелания. А вы говорите стандарт. smile.gif

Сейчас такой "стандарт", завтра другой, послезавтра еще чего. Лично я буду писать так, как удобно мне. И другим советую. Главное, чтобы код был читаем. А где там скобки или в какой нотации методы, дело совершенно второе. Мне почти все нравится в PSR, но некоторые моменты нет. И я не изменю стиль ради того, что несколько человек решили сделать свой "стандарт". Спасибо им, но навязывать не нужно.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Zuenf
Цитата
Разница в том, что функций несколько, а ошибка одна

"Это фича, а не баг". Сделано специально, если возможна только одна ошибка на все правила или хочешь обобщить.

Цитата
И еще, для чего собирать функции в одну строчку, а потом парсить? Читабельность падает в разы, не говоря уже о объемах кода и ресурсах. Еще можно понять вариант chee с массивами.

Массивы на данный момент тоже можно задавать(внизу 2 пример валидный для данной версии класса).

На счет читабельности, как раз не соглашусь:
первый вариант:
$rules['name'] = 'defined|trim|str_range(3, 20)|some_escape';
$rules['password'] = 'defined|str_range(6, 30)|match({password_conf})|md5';
второй вариант:
$rules['name'] = array(
'defined' => array(),
'trim' => array(),
'str_range' => array(3, 20),
'some_escape' => array()
);


$rules['password'] = array(
'defined' => array(),
'str_range' => array(6, 30),
'match' => array('{password_conf}'),
'md5' => array()
);

третий вариант:
if (!isset($name)) {
//добавляем ошибку
}

$name = trim($name);

if (!str_range($name, 3, 20)) {
//добавляем ошибку
}

$name = some_escape($name);

if (!isset($password)) {
//добавляем ошибку
}

if (!str_range($password, 6, 30)) {
//добавляем ошибку
}

if (!match($password, $password_conf)) {
//добавляем ошибку
}

$password = md5($password);

Понятно что третий вариант можно разделить на функции типа validName и validPassword. Но если нам надо будет например одни правила для записи в бд и другие для селекта из нее, то начнется вакханалия.
Хотя если это оформить так:
четвертый вариант
$rules = array();
$rules['dbInput']['name'] = function ($name) {
if (!isset($name)) {
//добавляем ошибку
}

$name = trim($name);

if (!str_range($name, 3, 20)) {
//добавляем ошибку
}

$name = some_escape($name);
}

$rules['dbInput']['password'] = function ($password) {
if (!isset($password)) {
//добавляем ошибку
}

if (!str_range($password, 6, 30)) {
//добавляем ошибку
}

if (!match($password, $password_conf)) {
//добавляем ошибку
}

$password = md5($password);
}

Но все равно придется мозгом парсить функцию, т.е. читабельность хуже.

Понимаю, что скорее всего будет повтор этого.
Цитата
Собственно как и с лямбда-функциями. Ну вообще они тут не к месту.

А где к месту? Только для колбеков?

В общем надо определиться как максимально читабельно и максимально рационально фильтровать данные. Прошу помощи "зала" в этом вопросе.

Цитата
А вот это место на повал убивает:
function getValidator()
{
    global $validator;
    return $validator;
}

Прост мозгом забыл подумать :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.