Skip to main content

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 - дефолтное значение

Данный класс может быть расширен/доработан для получения данных других типов