@symfony_php

Страница 438 из 1418
Boris
02.12.2017
20:49:39
А как правильно?

Sergey
02.12.2017
20:49:45
ну такие проблемы думаю валидны только на проектах размера средний++

Vladislav
02.12.2017
20:49:56
Sergey
02.12.2017
20:50:36
по-хорошему для каждой вьюхи составляется массив данных, уже в окончательном варианте. такой же как и для json

Google
Sergey
02.12.2017
20:51:08
много лишнего кода выйдет, но спать спокойнее потом будете)

особенно если захотите реакт изоморфы всякие

Boris
02.12.2017
20:51:30
Sergey
02.12.2017
20:52:04
Есть линк на github где это глянуть можно? На словах не совсем понятно.
ну вот представь что ты формируешь ответ для json. вот только ты не делаешь сериалайз, а передаешь этот массив в твиг и с ним работаешь

это могут быть либо дтошки, либо просто массив

Vladislav
02.12.2017
20:52:25
Есть линк на github где это глянуть можно? На словах не совсем понятно.
Перед тем как рендерить формируешь массив с коллекции сущностей с полями которые используются

Dmitry
02.12.2017
20:52:44
почему это нельзя сделать потом. при рефакторинге? ;)

Vladislav
02.12.2017
20:53:33
особенно если захотите реакт изоморфы всякие
Не видел ещё реакт апп на симфонии )

Sergey
02.12.2017
20:53:46
https://github.com/za4me/symfony.dev/blob/knp/app/Resources/views/genus/list.html.twig в твоем случае это будет чето в духе $viewData = ['genuses' => array_map(function(Genus $genues){ return ['name' => $genus->getName, 'speciesCount' => $genus->get...]; },$genuses];

Не видел ещё реакт апп на симфонии )
надеюсь скоро будет у нас) пока только в песочнице эксперементировал

Sergey
02.12.2017
20:56:53
да

Google
Sergey
02.12.2017
20:57:16
ну и меньше соблазн будет сделать каких-нибудь логических блоков в шаблоне

что тоже бывает доставляет неприятностей)

Boris
02.12.2017
20:58:26
В итоге в view прилетает просто массив данных и просто идёт его перебор, например

Sergey
02.12.2017
20:58:33
да

с тем же успехом ты можешь отдать json и отрендерить на клиенте

Boris
02.12.2017
20:58:55
А не массив сущностей и их перебор

Sergey
02.12.2017
20:59:08
в общем представляй что twig это такой же фронтэнд, который не знает о твоих сущностях и прочем булшите

Vladislav
02.12.2017
20:59:21
Это все для того чтобы во вьюхе не пошли перебором по связям и не слелали 1к кверей на страницу ?))

Boris
02.12.2017
21:00:15
Это все для того чтобы во вьюхе не пошли перебором по связям и не слелали 1к кверей на страницу ?))
А разве при передачи в view массива сущностей запрос будет идти из view?

Sergey
02.12.2017
21:00:29
там могут быть lazy связи

Boris
02.12.2017
21:00:38
А, вы за связи

Vladislav
02.12.2017
21:00:59
Вот такая проблема у меня ща с апи

А, вы за связи
Ну в шаблоне кто-то сделает user.team.users.blabla.category.users

И гг вп

Boris
02.12.2017
21:03:07
Вообщем сегодня профит такой: Передавать в шаблоны сущности нельзя, а лучше подготавливать данные в контроллере. Не совсем понял конечно мысли о доктрине и UoW, это я думаю со временем.

Ну в шаблоне кто-то сделает user.team.users.blabla.category.users
А при подготовленных данных это просто не смогут сделать.

Google
Vladislav
02.12.2017
21:05:06
А при подготовленных данных это просто не смогут сделать.
Ну ты передаешь скалярного типа данные, там нет связей

Boris
02.12.2017
21:05:26
Так то можно все что угодно :)

Vladislav
02.12.2017
21:05:51
Ну не, просто если ты и вью делаешь сам то беды не сделаешь

Ну типа все зависит от проекта, но бестпрактис такой.

Boris
02.12.2017
21:06:59
Главное что есть обоснование этого best practice, а не только потому что "парни из чатика сказали"

Vladislav
02.12.2017
21:07:12
Вот я сам на проекте

У меня нет времени на это

Sergey
02.12.2017
21:07:35
Vladislav
02.12.2017
21:07:43
Но вот юзать интерфейсы для связи с модулями/интеграции мастхев

Sergey
02.12.2017
21:08:44
А ещё с чего?
мертвый код, большая кодовая база.. ну это такое

Vladislav
02.12.2017
21:09:44
У меня ща это. Два года назад плотно завязал проект на сервис рассылки мэилган, а теперь пытаюсь отвязать и сделать абстрактным все

Boris
02.12.2017
21:10:39
Вот
Как называется этот паттерн что нельзя что-то напрямую пользовать, а только через прослойку?

Vladislav
02.12.2017
21:10:46
Потому что возможен переезд на сендгрид или другой какой-то сервис

Егор
02.12.2017
21:13:55
@za4me в Flysystem это называют адаптер: https://flysystem.thephpleague.com/core-concepts/

там идея в том, что есть разные хранилища файлов (aws, dropbox, in-memory) и чтобы отвязаться от конктретного хранилища юзают адаптер

Boris
02.12.2017
21:22:10
там идея в том, что есть разные хранилища файлов (aws, dropbox, in-memory) и чтобы отвязаться от конктретного хранилища юзают адаптер
Также как например не используют напрямую MySQL, PostgreSQL, etc, а используют прослойку, которая для указанной БД в env отдаёт нужный класс с нюансами для определённой БД?

Sergey
02.12.2017
21:23:02
@za4me в Flysystem это называют адаптер: https://flysystem.thephpleague.com/core-concepts/
а разработчики ОС называют это драйвером виртуальной файловой системы)

но паттерн сам по себе называется адаптер)

Google
Егор
02.12.2017
21:24:37
думаю "инверсия зависимостей" лучше подходит, чем адаптер

Sergey
02.12.2017
21:25:38
в контексте адаптеров

инверсия зависимостей это когда у тебя есть 2 модуля (не класса а именно модуля, компонента если хочешь). И у тебя один зависит от другого, но этот другой менее стабильным, потому ты делаешь в стабильном модуле интерфейсик, который четко дакларирует что тебе от другого модуля надо, и другой модуль его реализует. И теперь менее стабильный модуль зависит от более стабильного.

а драйвера/адаптеры это лишь конвертация одного интерфейса в другой. В случае с тем же сэндгридом или flysystem у тебя интерфейсики лежат в том самом "менее стабильном модуле". И это просто полиморфизм

правда есть вероятность что эти интерфейсики будут постабильнее чем твои зависимые штуки) и тогда как бы все хорошо)

Егор
02.12.2017
21:38:19
Хорошо, прослойка занимающаяся конвертацией - это адаптер. Но если мне просто хочется абстрагироваться от конкретного email транспорта с помощью interface EmailSender, то это ведь уже инверсия зависимостей, а не адаптер?

Admin
ERROR: S client not available

Sergey
02.12.2017
21:44:19
инверсия зависимостей - это когда у тебя интерфейс EmailSender принадлежит тому модулю, которому надо отправлять Email

ну то есть у тебя там потом должен быть другой модуль, который будет предоставлять адаптер этого интерфейса к свифтмэйлеру например

идея инверсии зависимостей в том - что бы поменять направление зависимости между модулями.

и под модулями я тут имею ввиду что-то большее чем класс

хотя на уровне компонента который содержит реализации это может считаться инверсией зависимости

но я все же думаю что это просто полиморфизм)

короч все на самом деле упирается тупо в направление зависимостей между модулями. Штуки которые меняются должны зависеть от штук которые меняются реже. Интерфейс меняется реже реализаций. Модули использующие твой EmailSender должны меняться чаще чем сам модуль содержащий этот интерфейс.

в случае с вендорными штуками - хорошая идея запилить простенький адаптер который либку скроет. И это будет инверсией зависимости

Sergey
02.12.2017
21:49:20
по сути инверсия зависимостей это больше механизм нежели принцип. У дяди боба в былые дни было 11 принципов

один из них - принцип стабильных зависимостей

Google
Sergey
02.12.2017
21:49:35
есть там еще принцип абстрактных зависимостей

вот они понятные)

а потом ему кто-то подсказал что из части его принципов получается OLID

и он добавил SRP и выкинул "лишнее"

Егор
02.12.2017
21:54:47
@fes0r спасибо за ответы

Alan
02.12.2017
22:12:26
а пробовал кто-нить че то такое https://www.npmjs.com/package/swagger-to-graphql

чтоб имея схему сделать такую прослойку

и не париться с graphql в пхп, интересно насколько оно может быть рабочим вариантом

smile
02.12.2017
22:19:31
Мне кажется всеравно будешь играться ограничивая сложность запроса/n+1 запросов . Не думаю что прослойка будет как-то умно все это делать

Alan
02.12.2017
22:39:24
ну с промисами у ноды это наверно попроще будет

плюс можно retry делать наверно если такой подзапрос который ждет выполнения основного сдохнет

ну и кажется это возможность оставить пых с привычным хттп апи

Антон
02.12.2017
22:59:49
Давали на выбор мне либо консольный калькулятор. Не справился и грустил. Сделал одним классом и регекспами

Им не понравилось

Sergey
02.12.2017
23:47:29
сделал бы разбор выражений в обратную польскую запись - может и понравилось бы

Егор
03.12.2017
06:00:49
Мне ещё нравится усложненная версия, где нужно вводить абстракцию для дробей https://gist.github.com/codedokode/7005985

Sergey
03.12.2017
08:38:49
2.6.0 альфа xdebug вышел с поддержкой 7.2 пхп и профайлингом памяти

Boris
03.12.2017
10:27:29
Привет всем.

Подскажите по фикстурам, в доке они на чистом PHP, но я ранее использовал nelmio/alice, что лучше?

Второй способ более приятен конечно как по мне.

Vladislav
03.12.2017
11:18:00
я юзаю nelmio alice

Страница 438 из 1418