Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Работа с отрисовкой объектов
- Основные пункты "что нужно сделать"
- 1. предать Header "X-Context" для смены формата (набор полей) ответа.
- 2. создать template (или воспользоватся базовым) PATH_TO_VIEW/controllerName/ActionName.X-Context.php
- базовое наполнение
- ```
- <?php
- $helper = new ResponceHelper($this->data, path_to_schema);
- echo $helper->generateJson();
- ```
- 3. создать схему, по которой будет генерироваться ответ.
- PATH_TO_SCHEMA/EntityName/name.php
- $ref - ссылка на другую схему, вместо этого поля вставится подключенная схема
- empty - (true, false) -указатель что поле может или не может быть пустым.
- type - тип поля, он же декоратор значения возможные значения
- 1. integer
- 2. string
- 3. array
- 4. object
- 5. или любой другой, если создан соответствующий декоратор (подключается фабрикой) опциональный параментр 'attributes' - для передачи доп параметров в конструктор декоратораы
- если передан в ключе type object, то обязательное поле 'attributes'
- если передан в ключе type array, то опциалальное поле 'attibutes' - если передан, то будет форматировать каждый елемент на соотв формат.
- Пример
- ```
- <?
- //PATH_TO_SCHEMA/EventSession/base.php
- return [
- 'id' => [
- 'type' => integer
- ],
- 'name' => [
- 'type' => string
- ]
- 'description',
- 'startsAt' => [
- 'type' => 'datetime',
- 'attributes' => [
- 'format' => 'YYYY-mm-dd HH:i:ss'
- ]
- ],
- 'event => [
- 'type' => 'object',
- 'attributes' => [
- '$ref' => PATH_TO_SCHEMA/Event/base.php
- ]
- ]
- ];
- ```
- ```
- <?
- //PATH_TO_SCHEMA/Event/base.php
- return [
- 'id' => [
- 'type' => integer
- ]
- ];
- ```
- # Что происходит в коробки
- 1. Разогрев Кеша - предлогается использовать APCU для сбора готовых массивов где ссылки ('$ref') уже заменены на соотв подсхемы.
- 2. базоывй ответ - Json. но так же можно переопределить и отвечать в другом формате, например xml (для этого можно использовать заголовок Accept)
- 3. заголовки отслеживаются Listener`и - соответственно контроллеры чище, и есть 1 конкретное место для изменения/добавления логики
- 4. Hepler исходя из схемы и данных полученых из контроллера строит ответ, и выбразывает Exception если данных не хватает или не возможно преобразовать в нужный формат
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement