Павел
Еще можно glob патерны использовать
Kirill
Как демку можно юзать
Павел
Ну есть такое, но там фигни много и я хз когда руки доберутся допилить https://github.com/SerafimArts/packagist.app/tree/master
Можно кстати разнести configs по своим модулям, правда там будет и более жесткое разделение, хз плюс это или минус)
Павел
Валентин в своем скелетоне показывал
Павел
И еще получается у тебя доктрина смотрит на всю апку. Хотя мб и пофиг
Павел
Те же типы в одном общем месте
Nikolay
Как тогда разнести их по разным папкам?
В каждом модуле делаешь свой конфиг, там все указываешь, а потом в основном конфиге цепляешь все внутренние
Nikolay
Ну например это нигде не найти в доке =)
Там стандартный подход для мелких проектов
Павел
Там стандартный подход для мелких проектов
Ну например что такое модуль, и что за свой конфиг в каждом модуле?
Павел
В каждом модуле делаешь свой конфиг, там все указываешь, а потом в основном конфиге цепляешь все внутренние
Я так понимаю, примерно как сделал Кирилл выше? Просто ручками import указывать из главного конфига?
Nikolay
Как пример, вот - { resource: ./../src/**/config/di.yml}
Nikolay
Я так понимаю, примерно как сделал Кирилл выше? Просто ручками import указывать из главного конфига?
Разница в том, что у него конфиги в одном месте лежат, а тут (файл лежит внутри модуля)
Павел
Как пример, вот - { resource: ./../src/**/config/di.yml}
Ну это вариант да. Но получается единый конфиг всего приложения + не уверен как работают package директория. У Кирилла я не увидел разделения той же доктрины по модулям
Павел
Т.е. например если в одном модуле забиндить что то, то это будет доступно и в другом. Вроде и ок, вроде и не ок
Павел
_default: bind: $env
Павел
Короче основной поинт в том, что конфиг хоть и располагается в папке модуля - он единый системы. Ну это просто как факт
Павел
Если же грузить через Кернел, как Удальцов предлагал, то там конфиги будут как бы своих "неймспейсках". Это имеет как плюсы (что свой), так и минусы (что надо некоторые вещи дублировать)
Kirill
Так-то, с удовольствием посмотрю как порезать это всё нормально
Павел
Но вообще вариант с импортом ручным все равно неплох по папкам, я лично не думал о таком)
Павел
https://github.com/vudaltsov/symfony-modular-skeleton Вариант Удальцова
Nikolay
https://github.com/vudaltsov/symfony-modular-skeleton Вариант Удальцова
Я в целом его вариант и использую почти, только с некоторыми отклонениями, например для dev свой файл конфига
Павел
Хм
Павел
Чет наверное я путаю сам тогда, дейстивтльено у него так и есть)
Павел
Я чет думал у него через Кернел
Nikolay
Чет наверное я путаю сам тогда, дейстивтльено у него так и есть)
Вообще, очень хорошо можно заметить разницу, когда есть два проекта, на одном стандартный сифони подход, а на другом нет
Павел
Вот это вот все про доктрину и тп
Павел
Они получаются все так же в config/package общие для всего проекта?
Павел
Я чет думал я кернел у Удальцова взял, а оказывается в другом месте где то )))
Nikolay
Они получаются все так же в config/package общие для всего проекта?
Это просто все в один идет в итоге imports: - { resource: ./packages/**.yml} - { resource: ./internal/**.yml} - { resource: ./../src/**/config/di.yml}
Павел
Это просто все в один идет в итоге imports: - { resource: ./packages/**.yml} - { resource: ./internal/**.yml} - { resource: ./../src/**/config/di.yml}
Есть просто еще вариант в кернеле все это указать, и вот когда там указывается, это не схлопывается в единый конфиг. А как бы по множество разных конфигов. Честно говоря не помню почему это так работает...
Павел
И например есои укащать теггет итератор одного модуля в другом - то он его видеть не будет.
Павел
Альясы сервисов наверно тоже
Павел
Ктрл ц ктр в и всё, эти ваши гены нефига не удобные
Я не пользуюсь, но имел опыт знаю что это. Так же имел опыт общения с опытными, кто пользуется
Михаил
Эпиляция к авторитету, понял
Павел
Эпиляция к авторитету, понял
Лишь опыт того, что видел слышал
Павел
Я не говорю пользоваться, я описываю какие возможности есть, и что есть те кто пользуется, и не только новички
Михаил
Я знаю парня, который знает парня, который сказал что генерация через cli не удобная
Dmitriy
Мы свой генератор написали для болерплейта
Dmitriy
А по поводу как у Удальцова, используем этот подход, никакого дублирования в конфигах.. если конфиг содержит детали модуля, то он находится в модуле.. общие вендорные вещи в дефолтных yaml конфигах
Dmitriy
не.. у нас в кернеле все конфиги из всех модулей импортируются
Павел
не.. у нас в кернеле все конфиги из всех модулей импортируются
Вооо. Вот если взять В модуле A забиндить $envireonment, то в модуле Б этот бинд виден не будет
Dmitriy
кстати наш генератор например для круда создает полностью все - ручки, тесты, openapi спеку
Павел
Если в модуле А сделать тегет итератор, то его нельзя будет заинжектить в модуле Б, он его тоже не увидит
Павел
Ну как то так короче
Dmitriy
не понял о чем ты.. у нас практически все на атрибутах
Павел
Т.е. конфигы загружаемые через лоадер, работают в рамках скоупа который они автовайрят
Михаил
кстати наш генератор например для круда создает полностью все - ручки, тесты, openapi спеку
А не на оборот должно разве быть? Из спеки рождаются сущности, поинты, тесты?
Dmitriy
и энвы и таггед итератор, все через атрибуты
Dmitriy
А не на оборот должно разве быть? Из спеки рождаются сущности, поинты, тесты?
ну спеку же надо написать.. а тут генератору говоришь имена сущности, полей и он тебе все генерит
Михаил
Ну да, в этом и смысл. Пишешь спеку - из нё всё генерится. Обновляешь спеку - всё обновляется
Dmitriy
надеюсь доживем когда голосом будешь управлять AI чтобы подобное делать
Павел
и энвы и таггед итератор, все через атрибуты
Если не ошибаюсь (просто такая фигня была с ямлом и тегами), например возьмем тегет локатор. Обозначим интерфейсом сервисы лежащие в модуле А, в потом ContainerInterface который будет являться точкой доступа для этих сервисов, обозначим в модуле Б. То сервисы из модуля А, внутри контейнера модуля Б - не окажутся. Потому что у них разный скоуп DI
Михаил
Ну ладно, потом дойдёте
Dmitriy
Ну ладно, потом дойдёте
писать спеку муторно и не интересно, поэтому мы ее тоже генерим
Dmitriy
видимо ты меня не так понял
Павел
Мы не используем такие извращения )
Это просто пример =) Пример что импорт через конфиг и импорт через кернел -разные
Павел
Через кернел - честный конфиг своего модуля. Через импорт главного конфига по маске - просто дробление на отедельные файлы основного конфига. Но конфиг всё так же един
Павел
Но я не говорю что, что то лучше хуже - просто есть свои + и -
Михаил
Конфиги просто ужаснык, луичше через аннотацию
Павел
Конфиги просто ужаснык, луичше через аннотацию
атрибуты грузятся теми же конфигами, через автовайринг
Павел
просто перносим описание
Саша
Нyжны 2 человека.Нужен телефон и два часа свободного времени в день. От 200 зeлёных в дeнь. Удалённaя сфера.За подробностями пишите сюда [@top_grooup13bot]
Dmitriy
Подскажите, как победить пхпстан 10го уровня? ) https://phpstan.org/r/31bce9df-d1d8-4647-a763-fd6535709243
Евгений
<?php declare(strict_types = 1); class Uuid { private string $uuid; public function __construct(string $uuid) { $this->uuid = $uuid; } public function __toString() { return $this->uuid; } } class HelloWorld { /** * @param list<Uuid> $a * * @return list<string> */ public function sayHello(array $a): array { $b = array_map( static fn(Uuid $c): string => (string)$c, $a, ); return $b; } }
Евгений
на именнованные константы и модификаторы доступы у меня ругается для php 7
Kirill
Подскажите, как победить пхпстан 10го уровня? ) https://phpstan.org/r/31bce9df-d1d8-4647-a763-fd6535709243
не использовать именованные аргументы в некорректном порядке
Kirill
это багло в стане, кажется
Dmitriy
ага спасибо )