Фильтрация данных в новой версии modHelpers
Это небольшой анонс новой функции библиотеки modHelpers, которая обрабатывает входящие данные и преобразует их к нужному типу. Это пригодится для обработки данных HTML форм. Идея навеяна суперским инструментом Laravel под названием сервис-контейнер. Причём пришла она ко мне сегодня в 4 утра, дабы уже не спал и смотрел на часы, и я решил её быстренько забабахать. Решил, сделал. Как оно будет, объясню ниже.
Привести данные можно также к типу array и float. Но самое интересное — можно указать название класса, и функция загрузит объект этого класса.
Ну и наконец, можно самому указать условие через анонимную функцию
Вот такой функций будет в новой версии. Мне кажется, разработчикам точно пригодится. Если есть предложения, давайте. Как говорится, одна голова хорошо…
Функция filter_data()
Функция принимает 3 параметра:- Массив данных — например, $_POST.
- Массив правил.
- Флаг, который определяет как возвращать данные — весь массив данных или только отфильтрованные данные.
# Данные из формы
// $_POST = ['id' => '5', 'name' => ' John', 'fullname' => ' Silver ', 'checkbox1' => 'on']
$rules = [
'id' => 'int', // Приводит к типу integer значение из $_POST['id']
'name' => 'string', // Удаляет теги и пробелы (trim) из $_POST['name']
'checkbox1' => 'bool', // Обрабатывает значение чекбокса $_POST['checkbox1']
'checkbox2' => 'bool' // Обрабатывает значение чекбокса $_POST['checkbox2']
];
// Выводит всё (fullname присутствует и не отфильтрован)
$filteredData = filter_data($_POST, $rules);
// ['id' => 5, 'name' => 'John', 'fullname' => ' Silver ', 'checkbox1' => true, 'checkbox2' => false]
// Выводит только отфильтрованные (fullname отсутствует)
$filteredData = filter_data($_POST, $rules, true);
// ['id' => 5, 'name' => 'John', 'checkbox1' => true, 'checkbox2' => false]
Думаю, пример достаточно наглядный. Правило bool удобно для работы с чекбоксами — для значений «1», «true», «on» и «yes» вернётся TRUE, в противном случае FALSE. Привести данные можно также к типу array и float. Но самое интересное — можно указать название класса, и функция загрузит объект этого класса.
// $_POST = ['user' => '5', 'name' => ' John', 'fullname' => ' Silver ', 'checkbox1' => 'on']
$rules = [
'user' => 'modUser',
];
$filteredData = filter_data($_POST, $rules);
// $filteredData['user'] - это теперь объект класса modUser с id 5.
Именно так работает разрешение объектов в запросах в Laravel.Ну и наконец, можно самому указать условие через анонимную функцию
$rules = [
'some' => function($value) {return $value ?: 'Значение по-умолчанию'},
];
На вход она принимает значение из массива данных. В ней можно выполнить все необходимые манипуляции и вернуть обработанное значение назад.Вот такой функций будет в новой версии. Мне кажется, разработчикам точно пригодится. Если есть предложения, давайте. Как говорится, одна голова хорошо…
Поблагодарить автора
Отправить деньги