
Max
16.08.2017
21:40:58
Мадженто в свое время задавала тренд, сейчас многие решения устарели и стали антипаттернами. Но когда маджента делала активрекорд, остальной мир конкатенировал запросы и совал в mysql_query()

Sergey
16.08.2017
21:41:43

Max
16.08.2017
21:41:45

Sergey
16.08.2017
21:41:59

Google

Sergey
16.08.2017
21:42:03
я не нашел

Max
16.08.2017
21:42:26

Sergey
16.08.2017
21:42:37
"тренды" не могут внезапно стать "антипаттернами". Тем более когда мы говорим о чем-то чему меньше 10-ти лет

Max
16.08.2017
21:42:50
я не нашел
Я не говорил, что он там есть. Я гипотетический пример привел.

Sergey
16.08.2017
21:42:53
другое дело "я 10 лет назад не умел а сейчас умею по другому"

Max
16.08.2017
21:43:13
Но вам нужна конкретная реализация, что само по себе забавно.

Sergey
16.08.2017
21:43:19
ты не можешь "обобщать" не зная вариаций

Max
16.08.2017
21:43:37

Sergey
16.08.2017
21:44:02
ActiveRecord же
ActiveRecord не антипаттерн. И появился он не в магенте и популярным стал не за счет нее

Aleh
16.08.2017
21:44:18

Sergey
16.08.2017
21:44:35
это вполне себе неплохое решение которое жертвует SRP в угоду простоты data-centric приложений коих большинство
вот только ecommerce солюшены не являются data-centric приложениями

Google

Sergey
16.08.2017
21:44:51
и в контексте оных - это антипаттерн
а CQRS/ES были известны с 2004-ого
например
да и дата мэппер запилить простенький (не универсальный) - это не сложно
а так AR стал популярен за счет DHH и его рельсов с бэкскэмпами. Только руби не пхп, там можно делать чуть более интересные штуки

Aleh
16.08.2017
21:46:27
ну вот возьмем буквально соседние файлы https://github.com/magento/magento2/blob/develop/app/code/Magento/Customer/Model/AuthenticationInterface.php
интерфейс для авторизации и блокировки при неправильном вводе или еще зачем-то и конкретная реализация https://github.com/magento/magento2/blob/develop/app/code/Magento/Customer/Model/Authentication.php стратегия которой блокировка при неправильном вводе в течение какого-то времени

Sergey
16.08.2017
21:46:32
магенту по сути это тот же битрикс только с закосом в другую сторону

Aleh
16.08.2017
21:46:41
при этом узнать об этом из имени класса или хотя бы описания к нему я не могу
и везде эти синглтоны блин

Sergey
16.08.2017
21:47:44
]\Magento\Framework\App\ObjectManager::getInstance()->get(CustomerAuthUpdate::class);]

Aleh
16.08.2017
21:47:45
вроде ж столько всего в конструктор пихается, в чем проблема все уже инъектить
мб недорефакторили)

Sergey
16.08.2017
21:48:37
мы тут недавно со знакомым на курилке беседу интересную завели начав с фразы "почему-то в проектах где используется сингелтоны редко бывает так что у тебя он только один"
мол в spring большая часть сервисов как бы стэйтфул но почему-то по дфеолту оно все делается сингелтором в контейнере
при том что в спринге у тебя при инициализации контейнера все инициализируется
и как бы сократилось потребление памяти если бы по дефолту прототипами фигачить, инстанцируя только по необходимости
и почему так никто не делает, почему так по дефолту?
часть сервисов как бы стэйтлесс*


Aleh
16.08.2017
21:53:58
ну или еще вот https://github.com/magento/magento2/blob/develop/app/code/Magento/Customer/Model/EmailNotificationInterface.php не буду даже критиковать сам этот интерфейс, но вот реализация https://github.com/magento/magento2/blob/develop/app/code/Magento/Customer/Model/EmailNotification.php
в которую все равно прокидывается абстрактный транспорт, что тут можно расширять\заменять и зачем решительно неясно

Sergey
17.08.2017
11:51:00
хохо

Google

Sergey
17.08.2017
11:51:48
бля пытался найти кнопку чтобы удалить, а это другой канал)

Aleh
17.08.2017
11:53:30
@f3ath тут @ExileeD говорит, что его @yetanotherstatsbot могет со спамом бороться

Evgeniy
17.08.2017
17:34:05

Sergey
17.08.2017
18:07:44
если нужно lazy, то помечай свои бины как lazy и все
в принципе одним lazy можно отключить целый модуль, т.к если сервисы зависимые используются только в lazy сервисе, то инициализированы они тоже будут не сразу
ну и плюс на каждый "lazy" сервис это будет отдельная прокся
что не есть кул

da horsie
18.08.2017
00:29:15

Den
18.08.2017
08:02:14
Это класс, который принимает некие аргументы, генерирует исключение и возвращает тебе?
Можно генерацию исключения вынести в отдельную команду(не про консоль речь)
А много их?
Ну по файлам я б раскидал

Danil
18.08.2017
08:07:23
а почему нужна фабрика?
почему не создать для каждого исключения класс, который будет расширять \Exception?

Den
18.08.2017
08:08:07
Так и будет

Danil
18.08.2017
08:08:23
вынеси анализатор в сервис
или у тебя уникальный анализ для каждого исключения?

Den
18.08.2017
08:09:33
Прост юбочки нра

Danil
18.08.2017
08:10:38
а как ты создаешь кастомное исключение? перехватываешь обычное, анализиируешь текст и создаешь?

Google

Den
18.08.2017
08:11:35
Я для этого сеттеры пишу, чтоб в чейне делать
Там в перехвате
А перехват как?
Биндом?
Чет не пойму. А что фабрика - это моветон?
Мож тебе Creator?
Или он только для 1 класса?
Тебе же инстансы исключений нужны?
Расширение фабрики для новых обьектов часто затруднительно.
А че у тебя?
В конструкторе
protected $error;
public function __construct($error)
{
$this->error = $error;
parent::__construct();
}
Типа того че то