ArrayDataHandler.php
Данный класс нужен для правильной работы типизации в массивах из небезапасных источников, например из массивов $_GET или $_POST. Типизация проверяется с помощью Psalm и если просто получать данные из таких массивов, то точный тип переменной неизвестен.
Класс ArrayDataHandler дает возможность получить типизированные данные из любых массивов. Это реализовано благодаря проверкам в методах получения данных. Если по ключу нет значения или значение не соответствует типу, то вернется значение по умолчанию
Методы класса:
__construct- инициализация класса$data- массив данных, из которых будет происходить получение данных
get_int- получение значения типаintиз массива. Если значение существует и (соответствует типуintили числу в типеstring), то вернется значение из массива приведенное к типуint, иначе$fallbackзнач ение$key- ключ для получения данных из массива$fallback- дефолтное значение
get_number- получение значения типаint|floatиз массива. Если значение существует и проходит проверкуis_numeric, то вернется значение из массива, иначе$fallbackзначение$key- ключ для получения данных из массива$fallback- дефолтное значение
get_string- получение значения типаstringиз массива. Если значение существует и проходит проверкуis_string, то вернется значение из массива, иначе$fallbackзначение$key- ключ для получения данных из массива$fallback- дефолтное значение
get_array- получение значения типаarrayиз массива. Если значение существует и проходит проверкуis_array, то вернется значение из массива, иначе$fallbackзначение$key- ключ для получения данных из массива$fallback- дефолтное значение
get_bool- получение значения типаboolиз массива. Значения приводится по следующей логики:- 'true', '1', 1 => true
- 'false', '0', 0 => false
- default => $fallback
get_enum- получаетEnumзначение из массива с помощью методаBackedEnum::tryFrom:$key- ключ для получения данных из массива$enum_class- имя перечисления (Enum), элемент, которого нужно получить$fallback- дефолтное значение
Данный класс может быть расширен/доработан для получения данных других типов