Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. # Работа с отрисовкой объектов
  2.  
  3. Основные пункты "что нужно сделать"
  4. 1. предать Header "X-Context" для смены формата (набор полей) ответа.
  5. 2. создать template (или воспользоватся базовым) PATH_TO_VIEW/controllerName/ActionName.X-Context.php
  6. базовое наполнение
  7. ```
  8. <?php
  9. $helper = new ResponceHelper($this->data, path_to_schema);
  10. echo $helper->generateJson();
  11. ```
  12. 3. создать схему, по которой будет генерироваться ответ.
  13. PATH_TO_SCHEMA/EntityName/name.php
  14.  
  15. $ref - ссылка на другую схему, вместо этого поля вставится подключенная схема
  16. empty - (true, false) -указатель что поле может или не может быть пустым.
  17. type - тип поля, он же декоратор значения возможные значения
  18. 1. integer
  19. 2. string
  20. 3. array
  21. 4. object
  22. 5. или любой другой, если создан соответствующий декоратор (подключается фабрикой) опциональный параментр 'attributes' - для передачи доп параметров в конструктор декоратораы
  23. если передан в ключе type object, то обязательное поле 'attributes'
  24. если передан в ключе type array, то опциалальное поле 'attibutes' - если передан, то будет форматировать каждый елемент на соотв формат.
  25.  
  26. Пример
  27. ```
  28. <?
  29. //PATH_TO_SCHEMA/EventSession/base.php
  30. return [
  31. 'id' => [
  32. 'type' => integer
  33. ],
  34. 'name' => [
  35. 'type' => string
  36. ]
  37. 'description',
  38. 'startsAt' => [
  39. 'type' => 'datetime',
  40. 'attributes' => [
  41. 'format' => 'YYYY-mm-dd HH:i:ss'
  42. ]
  43. ],
  44. 'event => [
  45. 'type' => 'object',
  46. 'attributes' => [
  47. '$ref' => PATH_TO_SCHEMA/Event/base.php
  48. ]
  49. ]
  50. ];
  51. ```
  52.  
  53. ```
  54. <?
  55. //PATH_TO_SCHEMA/Event/base.php
  56. return [
  57. 'id' => [
  58. 'type' => integer
  59. ]
  60. ];
  61. ```
  62.  
  63. # Что происходит в коробки
  64.  
  65. 1. Разогрев Кеша - предлогается использовать APCU для сбора готовых массивов где ссылки ('$ref') уже заменены на соотв подсхемы.
  66. 2. базоывй ответ - Json. но так же можно переопределить и отвечать в другом формате, например xml (для этого можно использовать заголовок Accept)
  67. 3. заголовки отслеживаются Listener`и - соответственно контроллеры чище, и есть 1 конкретное место для изменения/добавления логики
  68. 4. Hepler исходя из схемы и данных полученых из контроллера строит ответ, и выбразывает Exception если данных не хватает или не возможно преобразовать в нужный формат
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement