MATHEU
Имеет ли смысл разделять проект Symfony на два репозитория из-за фронтенда?
Михаил
Имеет ли смысл разделять проект Symfony на два репозитория из-за фронтенда?
это касается не только симфони. Вам нужно решить 1) будут ли разные команды работать над frontend и backend частью 2) не будет ли увеличиваться код экспоненциально из-за того, что у вас 2 проекта в одном репозитории 3) ваша ide сможет поддерживать работу с двумя разнородными проектами в одном репозитории ответы на эти вопросы подскажут вам, стоит ли разделять или нет
Maxim
Имеет ли смысл разделять проект Symfony на два репозитория из-за фронтенда?
В своей практике делаю обычно так. Завожу группу по проекту, а уже в ней делаю разделение на app для фронта и server для бека.
Apxat
есть же понятие монорепозиторий и многие крупные конторы его используют, тут универсального ответа на вопрос нет, но я бы выбрал монорепозиторий
Юра
Я на одном проекте держал фронт и бек в одном репе. Каких-то минусов не обнаружил
Юра
Это не мешало никак фронт и бек разворачивать в отдельных подах
Андрей
Подскажите какие есть способы решения следующей задачи. Есть проект (ядро), который взаимодействет с микросервисами (Есть некоторые API и сервисы для взаимодействия с микросервисами). Появилась задача отдавать ядро в эксплуатацию (докер образы ядра и микросервисов), но при этом в зависимости от заказчика отдавать определенные (не все) микросервисы. Следовательно, в роекте - ядре не должно оставаться следа взаимодействия с микросервисами, которые не переданы заказчику. Какие подходы в Symfony есть для такой задачи? У меня только одна идея - взаимодействия с микросервисами засунуть в Бандлы и подтягивать только необходимые. Может есть более удобный подход?
Денис
А id нельзя десереализовать из json в свойство? $json = '{"id": 16, "name": "Имя персонажа"}'; $character = $serializer->deserialize($json, Character::class, 'json', [ 'groups' => ['character_group'], ]); dd($character);
Денис
🗿
Михаил
Лучше скинь mvp того, какие аттрибуты на поле id, какие сеттеры, есть ли конструктор
Михаил
https://pastebin.com/BnuVNMgW
Setter для id сделай
Mikhail
Setter для id сделай
Кмк лучше в конструкторе принимать айди. Иметь сеттер на айди, значит иметь возможность менять у сущности айди, шо нелепо
Михаил
А вообще лучше использовать нормальный сериализатор , так как хаки с публичными полями, сеттерами и конструкторами не всегда применимы
Юра
Лучше вообще в конструкторе принимать все не нуллабл поля
Юра
Или все поля без которых энтити не имеет смысла
Юра
Есть такое понятие как инварианты и вот в идеале когда в каждый момент времени энтити у тебя и не только энтити а вообще любой объект находится в валидных состояниях
Михаил
Есть такое понятие как инварианты и вот в идеале когда в каждый момент времени энтити у тебя и не только энтити а вообще любой объект находится в валидных состояниях
ну имхо в конструктор лучше не принимать генерируемые поля (такие как id). Если принимать id то самим конструктором будет пользоваться сложно. А если сделать конструктор приватным и собирать объект через статические методы то сериализатор не будет работать. Так что сеттер - компомисный метод И насчёт инварианта. В иделае конечно да. Но в реальности инвариант можно соблюдать только в определённых точках программы. Не во всех
Михаил
А вообще меня удивляет Как доктрина МОЖЕТ записать значения в приватные поля, а сериализатор - нет?
Mikhail
ну доктрина юзает рефлексию
Mikhail
а сериализатор нет
Mikhail
ты ж можешь свой написать
Mikhail
мб для оптимизации так сделали
Михаил
ты ж можешь свой написать
да я всё что угодно могу написать. Просто там есть вроде PropertyAccessor да. Я думал он умеет в рефлексию
Михаил
Кстати, есть ещё способ $caller = function($id) { $this->id = $id } $caller->call($user, 123456);
Михаил
Спам-боты как всегда хорошо поддерживают диалог
Mikhail
?
Mikhail
я не бот
Mikhail
ты шо
Михаил
?
да бота забанило
Mikhail
а
Maks
я не бот
тест Тьюринга пройдешь?)
Михаил
я просто замечаю что они частенько в разгар беседы врываются
Михаил
тест Тьюринга пройдешь?)
слушай, а никогда не проходил - но слышал что есть
Михаил
а вообще страшно, а вдруг я робот
Mikhail
тест Тьюринга пройдешь?)
я даже своим глазам уже не верю
Mikhail
где нейронка а где фотка
Mikhail
шо уж про текст говорить
Михаил
где нейронка а где фотка
можешь нейронку попросить определить
Mikhail
ахах
Михаил
Раз уж мы тут мемы кидаем, то просто не могу не поделиться этим мемом
Михаил
Корми рыбов Комментарии: pikabu.ru/link/VArYQPU9ej
Des1roer
а public function onKernelException(\Symfony\Component\HttpKernel\Event\ExceptionEvent $event): void { может ловить typeError ?
Kirill
ну вроде должен
Юра
Почитай тут может поможет
Юра
https://github.com/symfony/error-handler
Юра
Да с докой у него не сложилось
Юра
Раньше такого за симфой не замечалось
Юра
Но вот тут в комментах есть https://github.com/symfony/error-handler/blob/7.2/ErrorHandler.php
Des1roer
А если сифма 5.4 и до 6.2 не апнуться? как можно костылями это обыграть?
Des1roer
public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true) { $request->headers->set('X-Php-Ob-Level', (string) ob_get_level()); $this->requestStack->push($request); try { return $this->handleRaw($request, $type); } catch (\Exception $e) { // будь тут Throwable было б замечательно if ($e instanceof RequestExceptionInterface) { $e = new BadRequestHttpException($e->getMessage(), $e); } if (false === $catch) { $this->finishRequest($request, $type); throw $e; } return $this->handleThrowable($e, $request, $type); } finally { $this->requestStack->pop(); } }
Des1roer
\Symfony\Component\HttpKernel\HttpKernel::handle
Alexsander
Всем привет ! Подскажите в чем проблема , бд лежит в контейнере докера в env указал DATABASE_URL=mysql://root:test@db:3306/symfony
Alexsander
Не могу понять почему бд не видит вроде в одной сити
Alexsander
Он специфичный)
Alexsander
Лучше докер композ скинь
Что из контейнеров интересно ?
Alexsander
Они все в одной сети
Pavel
Что из контейнеров интересно ?
Если не секрет для чего тебе и nginx и traefik одновременно?
Pavel
Чисто статику отдавать?
Alexsander
Db и fpm
Отошёл на 5 минут,
Михаил
Всем привет ! Подскажите в чем проблема , бд лежит в контейнере докера в env указал DATABASE_URL=mysql://root:test@db:3306/symfony
Похоже на то, как будто приложение локально запущено, а бд в докере Или они не в одном нетворке
Alexsander
Db и fpm
Так все работает
Alexsander
Alexsander
При запуске bin/console doctrine:database:create ожидаю увидеть ошибку , что бд созданна , а тут ощущение что не может подключиться
Alexsander
В env.local DATABASE_URL=mysql://root:test@db:3306/symfony
Михаил
В env.local DATABASE_URL=mysql://root:test@db:3306/symfony
Слушай а попробуй в ковычки значение энвы запихнуть
Михаил
И кеш почисти
Михаил
И самое главное проверь что действительно ЭТО значение подтягивается
Alexsander
DATABASE_URL="mysql://root:test@db:3306/symfony"