Юра
Ничего я думаю есть и на это какие-то способы
Гена
Да и для крупных тоже )
Последние 2 проекта имели 10 летнюю историю. Очень хотелось убить всех любителей попроще.
Гена
Ты считаешь, нужно всегда делать сложно?
Делать надо так чтобы легко читалось, легко тестировалось, легко рефакторилось
Гена
На yii попроще в контроле вызвать модель, сделать всю бизнес логику и вывести
Юра
Мне кажется я понимаю откуда ноги растут
Гена
Так и не смог убедить людей что так делать нельзя
Maxim Kainov
Делать надо так чтобы легко читалось, легко тестировалось, легко рефакторилось
Для этого должна быть возможность следовать срп принципу. Как ты разделишь ентити?
Юра
Я yii и других похожиш есть понятие модель
Юра
Только к симфони это не имеет никаклго отношения
Maxim Kainov
Нужно понимать этот принцип
Если ты будешь всю логику писать в ентитях у тебя не получится разделить ее
Гена
Я yii и других похожиш есть понятие модель
Модель понятие обширное и к yii отношения щас не имеет
Юра
Замени слово модель на сервис и все встанет на свои места
Гена
Если ты будешь всю логику писать в ентитях у тебя не получится разделить ее
Писать всю логику это ваши слова. Не стоит их мне приписывать
Гена
Я пишу на php используя его
Юра
Тут вопрос скорее доктрина
Юра
Ге важно какой фоеймворк
Гена
Да, доктрина. Инфраструктурный слой
Гена
К бизнес логике отношения не имеет
Юра
Вообщем я понимаю что можно взять доктрину сделать там рич модел, просто в симфони никто так не делает обычно и все
Гена
И я так не делаю
Гена
Доктрина это просто орм. У себя могу поменять на cycle за день
Maxim Kainov
Писать всю логику это ваши слова. Не стоит их мне приписывать
У заказа есть товары, есть расчет скидки, расчет доставки и т.д. Это все должны быть разные классы.
Гена
Бизнес логика все ещё будет работать
Юра
Ну так и скажи что у тебя логика в Модели а доктрина это просто маппинг
Гена
У заказа есть товары, есть расчет скидки, расчет доставки и т.д. Это все должны быть разные классы.
Конечно. Есть такое понятие как агрегат. Заказ частично будет оперировать несамостоятельными сущности
Юра
Туь же спор был что логика в доктрине
Maxim Kainov
Нет.
Как нет. У тебя один агрегат выполняет разные операции
Maxim Kainov
Год обджект
Maxim Kainov
Где тут по доктрину?
Ну ентити доктрины должны быть у тебя как структуры
Гена
Как нет. У тебя один агрегат выполняет разные операции
Агрегат реализующий бизнес логику заказа должен всегда нести эту логику. Нарушение SRP это если эта сущность делает что то ещё кроме работы с заказом
Гена
Ну ентити доктрины должны быть у тебя как структуры
Не должны. Ты сам определяешь архитектуру По исходя из задачи.
Maxim Kainov
Агрегат реализующий бизнес логику заказа должен всегда нести эту логику. Нарушение SRP это если эта сущность делает что то ещё кроме работы с заказом
Изменения должны быть в одно время и по одной причине. Доставка, скидка и т.д. это разные причины для изменения.
Гена
Если в заказе это есть то пипец
Maxim Kainov
Доставка заказа это не Заказ. Скидка это часть Товара.
У тебя скидка применяется к целому заказу
Гена
Ну вот, видишь, метод Применить скидку к заказу. Тогда норм
Maxim Kainov
Ну вот, видишь, метод Применить скидку к заказу. Тогда норм
И у тебя будет огромный объект заказа, выполняющий кучу разных функций.
Гена
И у тебя будет огромный объект заказа, выполняющий кучу разных функций.
У меня нет. У вас возможно. Не я же доставку сущности хотел внутрь засунуть
Maxim Kainov
С кучей завистмостей и без контейнера
Гена
Я писал выше принцип как понять что и куда.
Maxim Kainov
Так?
Гена
С кучей завистмостей и без контейнера
Каких зависимостей? Нет зависимостей
Maxim Kainov
Потом order->calculateDelivery
Maxim Kainov
И т.д.
Сергей
🧐
Maxim Kainov
А лучше orderDiscountService->calculate(order)
Гена
Потом order->calculateDelivery
Доставка это не Заказ
artem
Зачем формы для рест?
затупил с формой. они работают на ура, особенно если нужно заполнить сущность и провалидировать. а я затупил сем что не изменил запрос(сначала передавал сущность,а потом в форме изменил на коллекцию). все красиво работает
artem
Почему бы вместо формы сериалайзер с валидатором не использовать?
затратно в написании всяческихлисенеров и субскрайберов
Слава
Подскажите, пожалуйста: Использую lexikjwt для аутентификации, и аутентифицирую по полю email, но мне не нравится, что клиент будет указывать в запросе username, а не email. Можно ли как то сменить имя поля в json-e?
Egor
у него JWT)
И что? Получает то он его через json_login вероятно
Сергей
Слава
спасибо!)
artem
А для чего там лисенеры
Пока пример сложно придумать) ну из актуалочки все ещё не найду валидатор по вложенной сущности, существует ли такая
Юра
Валидатор Valid
Юра
Говорит что надо проверить влоденную сущность
Сергей
Всем привет. Возвращаясь к вчерашнему разговору. Вот пример есть) Есть сущность, назовём её Item. Она может быть разных типов: SimpleItem, PollItem, SubscriptionItem... Надо понять, может ли юзер активировать эту сущность. При этом у каждого типа там могут быть свои условия. Раньше в каждом классе сущности был метод canBeActivated(User $user). И для каждого он реализовывался по-своему. Но это очевидно неправильный подход, т.к. условия там могут зависить от внешних данных и даже возможно сервисов. Вопрос - куда лучше поместить этот метод? Для каждого типа айтема написать свой сервис активации и там и проверять условия? или как?
Maxim Kainov
Что то типа этого
Egor
AuthorizationChecker же
Сергей
ммда...действительно
Сергей
AuthorizationChecker же
а это к чему?
Egor
Он проверяет может ли пользователь совершать действия на объектом