Как получить все типы значения



Для примитивов всё просто — в PHP 8 теперь есть функция get_debug_type, она возвращает тип в привычном формате.



В случае объекта помимо класса нужно вернуть список суперклассов (умное название для родительских) и интерфейсов. Проще всего их добыть встроенными функциями class_parents и class_implements.



Что касается порядка отдаваемых типов, как правило, требуется сортировка от конкретных к абстрактным. Например, при поиске обработчика значения по типу имеет смысл сначала запросить узкоспециальный обработчик, а затем — универсальный.



https://3v4l.org/DFuO8