Download the PHP package vinogradova/sanitizer without Composer
On this page you can find all versions of the php package vinogradova/sanitizer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download vinogradova/sanitizer
More information about vinogradova/sanitizer
Files in vinogradova/sanitizer
Package sanitizer
Short Description Sanitizer - валидатор для струкртур данных из формата [key => value]
License
Informations about the package sanitizer
Sanitizer
Техническое задание
Предположим, что перед нами стоит задача обработать HTTP-запрос от клиента или ответ от стороннего API, содержащий данные в формате JSON. Нужно написать библиотеку "санитайзер", которая занимается валидацией и нормализацией данных в соответствии с переданной спецификацией.
Требования:
- Самостоятельное выполнение задания без оглядки на существующие решения
- Язык PHP/Python/JavaScript/TypeScript без использования сторонних библиотек (кроме библиотек для тестирования)
- Поддержка следующих типов данных:
- Строка
- Целое число
- Число с плавающей точкой
- Российский федеральный номер телефона
- Структура (ассоциативный массив с заранее известными ключами)
- Массив из однотипных элементов
- Должна быть возможность указать типы элементов массивов и структур
- Значения элементов в структурах и массивах могут быть любого из поддерживаемых типов (в том числе другие массивы, структуры, массивы структур, структуры массивов, массивы массивов структур и так далее)
- Генерация списка всех ошибок для некорректных значений. Формат описания ошибок должен предоставлять возможность сопоставить каждую ошибку с исходным значением. Например, если входные данные были сгенерированы на основе HTML-формы с вложенными (табличными) полями, должно быть технически возможно сопоставить каждую ошибку конкретному полю формы
- Тесты
Примеры:
1) из JSON '{"foo": "123", "bar": "asd", "baz": "8 (950) 288-56-23"}' при указанных программистом типах полей "целое число", "строка" и "номер телефона" соответственно должен получиться ассоциативный массив с тремя полями: целочисленным foo = 123, строковым bar = "asd" и строковым "baz" = "79502885623"
2) при указании для строки "123абв" типа "целое число" должна быть сгенерирована ошибка
3) при указании для строки "260557" типа "номер телефона" должна быть сгенерирована ошибка
Реализация
Санитайзер принимает на входе данные и типы для них в формате: ['key' => value]. Метод sanitize возвращает результат валидации данных.
Поддерживаемые типы данных
- string
- integer
- float
- phone
- array - передаётся массив с типом данных внутри. Например, ['string']
- object - передаётся ассоциативный массив, где ключи совпадают с ключами данных, а значения это типы данных. Например, ['a' => 'string']
В массивы и объекты могут быть вложены другие массивы, другие объекты и т.д.