Size: a a a

2020 May 02

NO

Nex Otaku in Yii Framework 2
Tagil Steel
Есть в Yii2 такое поведение - TimestampBehavior.
В одну строку кода добавляет функциональность - устанавливает поля created_at при создании или updated_at при изменении объекта.
Расскажите, как Вы сможете реализовать эту функциональность без событий?
Не относится к бизнес-логике же. Просто детали сохранения модели в бд.

Ну и без событий реализовать легко, допустим, переопределить save().

Мы отвлекаемся)
источник

TS

Tagil Steel in Yii Framework 2
Nex Otaku
Не относится к бизнес-логике же. Просто детали сохранения модели в бд.

Ну и без событий реализовать легко, допустим, переопределить save().

Мы отвлекаемся)
А зачем? Это что, будет проще и удобнее?
источник

TS

Tagil Steel in Yii Framework 2
Nex Otaku
Не относится к бизнес-логике же. Просто детали сохранения модели в бд.

Ну и без событий реализовать легко, допустим, переопределить save().

Мы отвлекаемся)
Насчет бизнес-логики - если вы считаете что это не относится к БЛ(что, по моему мнению неправда), то сохранение, например, сложных моделей в БД - относится? И, например, capcha относится.
источник

NO

Nex Otaku in Yii Framework 2
Павел Грибалёв
Задача заключается не в том чтобы обновить количество, а что когда в товаре меняется количество нужно произвести манипуляции. Да, можно в сервисе написать if и написать кучу добавлений в очередь и прочей логики. Но это придется писать в каждом методе, добавление, редактирование и прочее. А у нас еще может быть пачка задач, залить картиночку на s3, сгненерить превьюхи если была залита, перестроить индекс на фронт и прочая и прочая муть. И на что в итоге будет сервис похож и сколько нужно будет других сервисов включить в этот сервис?
На что будет похоже, зависит только от вашего умения.
источник

OK

Oleg Kuzmenko in Yii Framework 2
Nex Otaku
Не относится к бизнес-логике же. Просто детали сохранения модели в бд.

Ну и без событий реализовать легко, допустим, переопределить save().

Мы отвлекаемся)
Вы советуете в метод сервиса забросить AR-сущность «счёт», в методе обновить сущность, проделать некоторые манипуляции (активировать подписки) и разослать уведомления?
источник

NO

Nex Otaku in Yii Framework 2
Tagil Steel
А зачем? Это что, будет проще и удобнее?
Мы говорили про привязку БЛ на события.
источник

ПГ

Павел Грибалёв... in Yii Framework 2
Nex Otaku
На что будет похоже, зависит только от вашего умения.
Ну и вот наплодил значит подобных методов с простыней из кода. Сервис вырос на сотню, другую строк кода. И это изящнее чем в сеттере сущности зарегистрировать событие, написать эвент и пару слушателей?))) И такой сервис более тестируемо и более читаемо, ага конечно)
источник

TS

Tagil Steel in Yii Framework 2
Nex Otaku
Мы говорили про привязку БЛ на события.
Если Вы пишете что-то из БЛ в методах beforeSave aftersave и так далее, Вы уже используете эвенты.
источник

TS

Tagil Steel in Yii Framework 2
Павел Грибалёв
Ну и вот наплодил значит подобных методов с простыней из кода. Сервис вырос на сотню, другую строк кода. И это изящнее чем в сеттере сущности зарегистрировать событие, написать эвент и пару слушателей?))) И такой сервис более тестируемо и более читаемо, ага конечно)
При этом проект развивается, логика меняется, у методов сервиса меняется интерфейс и появляются методы updateProductNewAfterV3
источник

NO

Nex Otaku in Yii Framework 2
Oleg Kuzmenko
Вы советуете в метод сервиса забросить AR-сущность «счёт», в методе обновить сущность, проделать некоторые манипуляции (активировать подписки) и разослать уведомления?
Нет.

Я ничего не советую, просто делюсь опытом. Разве чат не для этого?)

Сделайте на событиях.

Потом когда-нибудь попробуйте сделать без событий и сравните, сделайте выводы.
источник

OK

Oleg Kuzmenko in Yii Framework 2
Nex Otaku
Нет.

Я ничего не советую, просто делюсь опытом. Разве чат не для этого?)

Сделайте на событиях.

Потом когда-нибудь попробуйте сделать без событий и сравните, сделайте выводы.
Ну и советовать в чате вроде как тоже не запрещено 🙂
источник

NO

Nex Otaku in Yii Framework 2
Павел Грибалёв
Ну и вот наплодил значит подобных методов с простыней из кода. Сервис вырос на сотню, другую строк кода. И это изящнее чем в сеттере сущности зарегистрировать событие, написать эвент и пару слушателей?))) И такой сервис более тестируемо и более читаемо, ага конечно)
Без конкретного кода уже нет смысла что-то дальше обсуждать.

Делайте, пробуйте, развивайтесь, экспериментируйте. Удачи!
источник

ПГ

Павел Грибалёв... in Yii Framework 2
Nex Otaku
Без конкретного кода уже нет смысла что-то дальше обсуждать.

Делайте, пробуйте, развивайтесь, экспериментируйте. Удачи!
Окей-окей😄
источник

ДК

Дмитрий Кожанов... in Yii Framework 2
Nex Otaku
Нет.

Я ничего не советую, просто делюсь опытом. Разве чат не для этого?)

Сделайте на событиях.

Потом когда-нибудь попробуйте сделать без событий и сравните, сделайте выводы.
Наступите на событиях на грабли и переделайте
источник

NO

Nex Otaku in Yii Framework 2
Именно)
источник

ПГ

Павел Грибалёв... in Yii Framework 2
Nex Otaku
Именно)
Вы себя слышите?) Ваш подход все говно храним в одном месте простите за грубость. Просто посмотрите паттерн наблюдатель и может тогда будет очевиднее, что это не так и плохо.
источник

NO

Nex Otaku in Yii Framework 2
Почему вы решили, что без событий возможен только подход "всё говно храним в одном месте"?
источник

NO

Nex Otaku in Yii Framework 2
Для группировки кода, есть:
1. Методы
2. Классы
3. Компоненты (набор классов с общей задачей)
4. Модули (группа компонентов, реализующая часть предметной области)
источник

NO

Nex Otaku in Yii Framework 2
Разбивать код по методам, классам и компонентам вы можете как с событиями, так и без них.
источник

NO

Nex Otaku in Yii Framework 2
Различие будет только в неявной связи при событиях и явной при использовании прямого вызова.

Как правило, там где нужно что-то "дёрнуть", передаётся зависимость через DI в конструктор. И вызывается нужный метод.

Происходит это либо в контроллере, либо в подходящем сервисе.
источник