Фильтрация данных в новой версии 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 ?: 'Значение по-умолчанию'},
];На вход она принимает значение из массива данных. В ней можно выполнить все необходимые манипуляции и вернуть обработанное значение назад.Вот такой функций будет в новой версии. Мне кажется, разработчикам точно пригодится. Если есть предложения, давайте. Как говорится, одна голова хорошо…
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            
        0