Nikolay
но если создаю для доктрины то не идет
Павел
не пойму почему нельзя в пхп собрать строку запроса и выполнить
Nikolay
можно, но интересно можно ли реализовать через доктрину
Павел
так сделай мвп сдай, на ревью тебе объяснят и развернут
Nikolay
некому объяснять)
Ibray
а почему if не проходит? что пишет?) А если case попробовать
Nikolay
я ж ссылку скинул
получается нельзя только в sqllite?
Сергей
DQL - это абстракция. Если сама СУБД это умеет, то можно сделать . Если сама СУБД не умеет - то никак нельзя)
Пилот
Ну вот поэтому делаютс всяке Clock->now() - это и тестировать можно
Кстати, а что если нужно $clock->now() в энтити вызвать? Только лишь через di прогружать в сеттеры/конструкт?
Пилот
Шоб агрегировать бы как то а не композировпть извне
Пилот
Ну типа через new не сделаешь же
Пилот
Это похоже на мой state machine/workflow просто проблему вроде
Пилот
Раньше описывал, но не суть)
Павел
В метод передается datetime там, где это нужно
Пилот
В инжекцию через сеттер в энтити?
Пилот
Или интерфейс клока же
Павел
Пилот
А, ну типа УЖЕ now datetime который выдал передаем
Пилот
Бле, мне конечно со Стейт машин это не получится по логике, иначе любой воркфлоу прогрузить можно)
Павел
А, ну типа УЖЕ now datetime который выдал передаем
Да, ранее получили в юзкейсе, или где то там, от интерфейса clock- и передаем в сущность.
Павел
В принципе клок отчасти загон, но в тестах помогает, если надо что-то со временем протестировать
Пилот
Ну это как допустимый экстенд симфонийского UserEbtity интерфейса в домене у класса User типа я так понял)
Павел
Ну это как допустимый экстенд симфонийского UserEbtity интерфейса в домене у класса User типа я так понял)
Ну тут все же данность, а клок уже свои навороты. Опять таки, Симфонийский интерфейс касается только авторизации на ролях и аутентификации, которая и так на фрейме висит. Какую то бизнесовую логику можно в другой класс юзера вынести
Пилот
А у меня по сути все бизнес логика кроме экстенда интерфейса ЮзерМнтерыейс симфы)
Пилот
Вроде
Павел
А у меня по сути все бизнес логика кроме экстенда интерфейса ЮзерМнтерыейс симфы)
Имеется ввиду, что можно сделать отдельный класс для атворизации и аутентификации и он будет имплементить ЮзерИнтерфейс симфони и больше ничем не заниматься. А всякие профайл, кастомер, и прочее что вроде тоже юзер - отдельные классы.
Павел
Ну да, типа getRoles и extend UserInteface вынести в бейс класс
Не бейс класс, просто незавимые классы ДанныеАутентифации, Профайл, Кастомер. Никак не связанные никакими бейс классами
Пилот
Угумс, я про композицию тоже, не наследование
Павел
Ну это уже загон про дробление, но там свои сложности отчасти
Павел
Они вообще не знаю друг о друге никак
Пилот
Хм, надеюсь такая имптементация возможна ) не игрался ещё настолько
Павел
Хм, надеюсь такая имптементация возможна ) не игрался ещё настолько
ддд - контексты. Хотя думаю эта тема не только в ддд
Пилот
Я делал
Попробую по возможности))
Пилот
ддд - контексты. Хотя думаю эта тема не только в ддд
Ну BC то понятно) у меня ленивые bc, небольшие каплинги есть все же, надо почистить
Пилот
Я юзаю shared kernel но не все вынес
Павел
Грубо говоря, незачем в одном классе юзер хранить данные аутентификации, профиля, оплаты. ТАк как они между собой не пересекаются ни в одном из сценарии.
Пилот
Ну и привязки есть по сущностям между бц, надо на EntityId перевязать и ввести классы контекстов)
Павел
Но возницкают другие вопросы, как создавать их вместе, где то не профукаться и поддерживать некую консистенцию )
Пилот
У меня пока по сути связанные модули. Апкам всего чуть больше года, только я в команде разработки))
Пилот
Но сплитить/мерджить BC в целом норма как я понял
Пилот
За время дев лайфсайкла апок
Юра
Кто-то уже юзал? Симфони юзает )
Konstantin
я вовсю, не вынимая
Konstantin
топ1 фича для меня просто
The Ant
топ1 фича для меня просто
сахарод для свитч кейса же
Konstantin
не совсем, но если так рассуждать, то всё - это сахар для ифа или гото
Konstantin
enum OrderStatus: int { case NEW = 0; case COMPLETED = 1; case PROCESSING = 7; public function getReadableName(): string { return match ($this) { self::NEW => 'Новый', self::COMPLETED => 'Оплачен', self::PROCESSING => 'Обрабатывается', }; } }
Konstantin
с енамами что-то такое можно писать, очень удобно
The Ant
так сахарок заключается в том, что хавает все недостатки свитч кейса, не?
Konstantin
чуть руки заняты, если интересно, хотя бы вот пробегись - там за меня ответят в чем разница
Konstantin
https://stitcher.io/blog/php-8-match-or-switch
Konstantin
(как же заел этот таймаут)
The Ant
в чем матч выиграл? )
Konstantin
во-первых, хотя бы в памяти - мы не заводим никакие массивы под эти значения, во-вторых - в строчках, если там чуть более сложное, например, 1, 2, 3 => 'Новый', default => throw new Exception()
Konstantin
но пробегись таки по доке и/или статье по ссылке выше
Юра
Блин я тут понял что без ДТО теперь уже никуда
Юра
Раньше херачил сериализатором прям в энтитю и валидировал
Юра
Сейчас такой фокус не проходит
The Ant
поэтому думаю косяк остался
Konstantin
о чем ты?
The Ant
о том, что у свитча сложность увеличивается с каждым условием )
Konstantin
ну и заводить массивы-"справочники", согласись, всё же костыль, если тебе нужно буквально поматчить одно на другое. нахера массив со значениями, если можно без массива со значениями типа.
The Ant
это эквивалент if ... elseif .... elseif ... etc
Юра
самый крутой матч в расте, все остальное лабуда
Konstantin
я же говорю, всё в этом мире сахар или для ифа, или для цикла, или для гото. если с этой точки зрения оценивать, мы так и будем на голангах писать
The Ant
т.е. чем дальше сработает условие тем будет выше сложность. с массивами у тебя будет хешмапа с О(1)
Konstantin
самый крутой матч в расте, все остальное лабуда
здесь близко, тк можно матчить по шейпу тоже, не только по значению
Юра
начнем с того что там не O(1)
Юра
)
Юра
хотя хз
Юра
там такие навороченные массивы что хрен поймешь
Konstantin
т.е. чем дальше сработает условие тем будет выше сложность. с массивами у тебя будет хешмапа с О(1)
она не бесплатная, эта хешмапа, вообще-то, а вполне ощутимо жрёт. к тому же, она мутабельная (легко накриворучить и переписать этот справочник). она не заставит тебя явно перечислить все значения енама, например. а матч - заставит. твой способ не может в дефолт-ветке кинуть исключение, а может заменить только дефолтным значением