Skip to content

Serokuz22/testcomr

Repository files navigation

Тестовое задание

Данные для неё см. в файле dump.sql. Поля условно можно поделить на группы, которые идентифицируются по префиксу. Например, можно считать одной группой поля начинающиеся с termsOfSolution_. Поля внутри группы можно представить в виде дерева. Символ нижнего подчёркивания _ служит разделителем вложенности. Например howWeWork_tabs_0_stages_4_title можно интерпретировать как массив howWeWork внутри которого есть массив tabs состоящий из одного элемента (индекс 0), внутри которого есть массив stages состоящий из 5-и элементов, внутри которого есть элемент title. Необходимо написать класс с методами, упрощающими работу с данными из этой таблицы: получение отдельных полей, получение группы, получение поля из вложенного поля. Не все поля должны попадать в выдачу пользователю (то есть при чтении поля должен быть возвращён null), а какие именно поля должны или должны попадать определяется функцией фильтрации. Например, поля группы termsOfSolution_ должны быть полностью проигнорированы если поле termsOfSolution_enabled == 0. Значения некоторых полей нельзя использовать в сыром виде, их нужно преобразовать. Для пользователя класса это должно быть полностью прозрачно, при запросе какого-то значения он получает сразу преобразованное значение. Например, значения некоторых полей должны быть преобразованы в boolean, а некоторые содержат сериализованный PHP-массив. Для каждого поля можно задать свою функцию отображения. Если функция не задана, то оставить исходное значение как есть. (!) Напишите тесты для класса (или классов), реализующих всё описанное выше. Реализуйте кеширование результатов работы этого класса для каждого object_id. Сбрасывать кеш нужно только при получении HTTP POST запроса.

Releases

No releases published

Packages

No packages published