Павел
Хз. Так то и той же апи платформе можно писать на ДТО и потом шлепать свои хэндлеры которые работаютс сущностью. Но весь кайф rad пропадает
Павел
По сути админка лары почему идет через БД, потому что у нее сущности сами по себе голые и тоже работают через БД
Kirill
ага
Kirill
тупо Rich DAO
Kirill
т.е. AR, если переводить на юзерский язык
Павел
Короче хз, надо в этот вопрос погружаться. Просто читал не раз, что люди успешно используют апи платформу в сложных проектах.
Админки +- , но там надо хорошо в формы уходить.
Да это не чистый код, но опять же где то надо где не надо его
Павел
Надо уметь вертеть инструментами и знать их плюсы и минусы
Павел
Не везде нужен ДДД и все эти слои абстракции.
Kirill
да я тоже прост попиздеть))) глубоко не копал в апи платформ, только поверхностно, но того что увидел в примерах и потыкать самому на крудах хватило чтоб туда не соваться, да и люди плюются, когда чуть влево, чуть вправо
Павел
Павел
В отличи от админок, в которое если зашел, то с концами
Павел
Круды пишешь на ней, сложное пишешь сам - профит.
Павел
Но просто проще писать все в одном стиле (ддд, слои, и тд) и не парить голову, как оптимальнее. Тип "я пишу хорошо"
Kirill
а, ну вот так если, то мб да
Kirill
Kirill
ну т.е. просто потратить пару минут времени, чтоб написать конвертер из ДТО в респонз - это как бы не особо сложно
Павел
да не, я всё же за адекватность
Да не, тут не то что адекватность или нет. Тут мб опыт или что то еще хз.
Я сам не рискну куда то тащить ее, хоть это было оптимально. Просто проще не думать и писать на нативке, как деды завещали. Все разбить, все абстрагировать
Но на одном проекте затащили до меня, и ниче, норм, очень помогает если разобраться в технологии
Kirill
проблема ещё в компетенциях тех, кто нативку фигачит эту)
Kirill
а то знаем мы "адептов чистого кода"
Павел
)))
Юра
Кто-то сталкивался с тем что после установки расширения uopz die перестает даить?
Юра
Uopz нужен для работы clock freeze в тестах
Юра
Нашел ишью но без ответа
Юра
Ну пока не много тестов которые используют эту фичу
Юра
Или это надо весь код на этот клок интерфейс переписывать?
Павел
Юра
Понятно. Нужно оценить)
Юра
Спасибо не знал что такое есть
Юра
А он мапится в доктрину также?
Павел
Смысл в том, что время не генерируется внутри сущностей или сервисов а достается из clockInterface
Юра
А ну да
Павел
Т.е new Entity(createdAt: $this->clock->now())
Юра
Понял
Павел
Тогда в тестах можно поставить мок этого сервиса, или же вообще его вытащить и подсовывать любое время через setNow (это уже не clockInterface но кто мешает добавить в самоу реализацию или другой интерфейс)
Павел
У меня вот такая штука есть.
В тестах достаю клок, делаю instanceof mockClock и устанавливаю нужное время
Kirill
Лучше не надо
Kirill
Ты в одном тесте меняешь и по каскаду у тебя все тесты валятся, т.к. в них тоже меняется
Kirill
Хотя если кернел ребутать и из него каждый раз новый тащить... Ну норм наверное
Юра
Ну да иначе моки одного теста перелазили бы на другой
Юра
Скорее всего контейнер билдится и кешируется. Но каждый тест заново его загружает, а моки они же в памяти
Юра
https://github.com/symfony/framework-bundle/blob/7.1/Test/KernelTestCase.php
Kirill
Kirill
я написал об этом
Kirill
а внутри кернела уже контейнер тестовый
Kirill
Тебе нельзя их писать!
Ну вот, написал тот, который хотел чтоб был в темпорале))) Пока набросок, но основная идея такая должна была быть) https://github.com/SerafimArts/Mapper
Пока доки нет, но там в папочке примеров есть всякие примеры простые
Vlad
Kirill
ещё всякие бриджи на симфу и жмс хочу
Vlad
Гляну код детальнее. Получается чтобы вставить в темпорал надо еще рефлексию втащить, чтобы распознавать тип по значению
Vlad
Чтобы тип сохранялся
Kirill
тип по значению сам распознаётся, но только базовый
Kirill
типа array, вместо array<int> или ещё что
Kirill
Kirill
там нет isSupports чтоб распознавать в юнионах и интерсекшенах
Kirill
ну в общем, ща только чтоб потыкать если, доки мне ещё надо написать
Vlad
Пингуй. Бридж на sf могу сделать
Kirill
так а что его делать-то)
Vlad
Ну да)))
Kirill
там 2 метода завраппать
Vlad
В этом и смысл)))
Vlad
А как же конфиг?)
Vlad
Ахах
Kirill
так там всего 2 опции ща
Kirill
https://github.com/php-type-language/mapper/blob/master/src/Context.php
Vlad
Там поди еще кэши всякие
Kirill
а, ну там ещё и кеш
Kirill
да
Kirill
но кеш только если есть классы
Vlad
Крч на что фантазии хватит)))
Kirill
ну, если кратко, то смысл в том, что
1) есть базовая грамматика типов пхп (пхпдоков) со всеми дженериками, шейпами и проч.
2) есть "платформа", которая говорит какой синтаксис поддерживается и какие типы есть (https://github.com/php-type-language/mapper/blob/master/src/Platform/StandardPlatform.php)
3) в рамках, например, дефолтной платформы есть конвертеры классов, которые детектят что тип является классом (https://github.com/php-type-language/mapper/blob/master/src/Type/ObjectType.php)
4) а это уже самостоятельная шляпа, для которой уже запилена метадата встроенная, ридеры и прочий фарш.
Так что:
1) Можно создавать какие угодно типы, хоть обжект шейпы, типа: object{some: int}
2) Группировать их по платформам, типа дефолтной или под базу данных какую-то (где тип array будет в виде json строки, например)
3) А можно подменить один тип и пустить, например, некоторые значения через JMS, некоторые через симфони, а всё остальное обрабатывать дефолтным путём
Причём оно довольно просто и очевидно сделано всё
Вадим
привет всем!
нужна помощь тили пата
есть мессадж мессаджера, хранятся в редисе. Есть обработчик. Иногда обработчик мессаджа падает с ошибкой
"Handling \"App\\Message\\MakeTaskPlanPreviewMessage\" failed: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 7 no connection to the server",
что это может быть, как хоть дебажить такое
Kirill
Пхпдоки понимает?
done https://github.com/php-type-language/mapper/blob/master/example/08.phpdoc-types.php
Михаил
Вадим
Вадим
а чо его нету