@prophp7

Страница 1283 из 1387
Maksim
05.09.2018
15:51:35
Типа setter injection это плохо?
это плохо и этому нет никакого оправдания. Вообще.

Сергей З.
05.09.2018
15:51:38
Типа наследники натворят чего

Maksim
05.09.2018
15:52:03
да даже без наследников. Что мешает пользователям класса творить с коннектом сраные чудеса?

Alexander
05.09.2018
15:52:33
это плохо и этому нет никакого оправдания. Вообще.
Ты логер делаешь всегда обязательной зависимостью?

Google
Maksim
05.09.2018
15:52:47
аще никогда не делаю обязательным

f4rt~
05.09.2018
15:53:32
да даже без наследников. Что мешает пользователям класса творить с коннектом сраные чудеса?
у меня есть кейс с абстрактным классом и пару методов вроде markComplete()/markInComplete() и стратегия уведомлений, пока боли особо небыло

Maksim
05.09.2018
15:53:40
но, чую, из симфони чатика надо сюда сообщеньки форвардить... одно и то же каждый раз...

Сергей З.
05.09.2018
15:54:35
Это неудачный пример был. А что если там были бы posts. Ну и тпа какой-то setPosts в абстрактном, а в реализациях setPosts может отличаться(типа что-то докидывать) Тоже бы за такое руки оторвал?))

Luka
05.09.2018
15:54:36
привет всем, чтобы system запустить и использовать сторонюю программу на сервере надо в php 7 safe mode отключать? вроде это убрали с 5,4 ?

f4rt~
05.09.2018
15:54:44
ну в целом у меня скорей мысль была, что важно всего лишь знать где можешь объебаться

и делать когда понимаешь риски

Maksim
05.09.2018
15:55:19
так-то у меня у самого саги, к примеру - абстрактный класс. Но у них полностью приватный стейт.

f4rt~
05.09.2018
15:55:28
обычно разговор за сеттеры всегда плавно перетекает в мутабельность и всякие нехорошие штуки которые можно сделать с языком

Maksim
05.09.2018
15:56:24
не вижу ничего плохого в абстрактных классах, если человек пользуется мозгом, а не сеттит коннекты к базе данных, "что бы убрать копипасту"

f4rt~
05.09.2018
15:56:53
выдохнул спокойно :)

Google
Сергей З.
05.09.2018
15:56:55
Ок. смысл, вроде, понял

Артур Евгеньевич
05.09.2018
15:58:54
помню был у меня проект на вторйо симфе дикое легаси, так я не мог один сервис в другой заинджектить из за чего то типо циелических ависимостей многоуровневых, и один сервер не создалвася без другого

и я вставил костыл с сетером)))

но вообще да это полная хуйня

Alexander
05.09.2018
16:00:11
как по мне setter injection весьма хорошая штука, ибо мне незачем в конструкторе требовать то, что можно забить каким-нибудь Null-обджектом, то, что не сильно влияет на работу

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

Maksim
05.09.2018
16:00:46
Херь какая-то

От обоих, если что)

Alexander
05.09.2018
16:02:13
Может тогда тебе вообще этот объект не нужен в данном?
скажем так, он там не очень нужен, но иногда надо его туда пихнуть. если я хочу дать возможность логировать действия своей либы, то я дам возможность туда логер положить

Артур Евгеньевич
05.09.2018
16:03:08
или даже декоратор

Alexander
05.09.2018
16:03:53
да это всё равносильные выходы, в целом

Артур Евгеньевич
05.09.2018
16:04:39
а еще есть АОП))

https://habr.com/post/165329/

Maksim
05.09.2018
16:04:44
https://github.com/mmasiukevich/service-bus/blob/master/src/Sagas/Configuration/SagaEventListenerProcessor.php Нужен логгер - передай. Не нужен - ничё не изменится. В симфоне чате все это уже сотню раз обсасывали

https://habr.com/post/165329/
Оч опасная штука

Артур Евгеньевич
05.09.2018
16:05:02
От обоих, если что)
мою историю нужно воспринимать с некоторой долей иронии, но тем не менее она реальная)

Alexander
05.09.2018
16:06:21
https://github.com/mmasiukevich/service-bus/blob/master/src/Sagas/Configuration/SagaEventListenerProcessor.php Нужен логгер - передай. Не нужен - ничё не изменится. В симфоне чате все это уже сотню раз обсасывали
нужен логгер — передай в setLogger, нехер конструктор засирать, чтобы вот такую хуйню не создать https://github.com/pepe1518/magento2/blob/master/vendor/magento/module-catalog/Model/Product.php#L386

Google
f4rt~
05.09.2018
16:06:58
ох ты ж ебана

Maksim
05.09.2018
16:07:42
Это ошибка проектирования. Если бы там были сеттеры, лучше бы не стало

Ащн ни капли

Артур Евгеньевич
05.09.2018
16:07:58
но вообщето сервисы должны быть или стейтлесс или иммутабельными, а setLoger просто хуй кладет на этот принцип

Alexander
05.09.2018
16:08:41
Это ошибка проектирования. Если бы там были сеттеры, лучше бы не стало
конкретно в этом случае все зависимости обязательные, а теперь добавь ко всем зависимостям = null в кострукторе и увидишь тотальный пиздец

Артур Евгеньевич
05.09.2018
16:08:44
а setContainer ;x ?
не понял, что это? контейнер заинджектить?

f4rt~
05.09.2018
16:08:53
не понял, что это? контейнер заинджектить?
https://api.symfony.com/master/Symfony/Component/DependencyInjection/ContainerAwareInterface.html#method_setContainer

Alexander
05.09.2018
16:09:24
Сеттеры мне тут чем помогут?
как минимум разгрузить конструктор от опционального говна

Артур Евгеньевич
05.09.2018
16:09:31
f4rt~
05.09.2018
16:09:47
аа, ну эт хуйню я не использую
там еще ContainerAwareTrait есть для этих целей

Alexander
05.09.2018
16:09:49
твой пример с Logger $logger = null — уже засирание сраным говном

Артур Евгеньевич
05.09.2018
16:09:58
Схуяли?
видимо размазав все это гавно, по всему файлу, и проекту в целом

Alexander
05.09.2018
16:10:00
которому там не место

Maksim
05.09.2018
16:10:06
Ясна. Ларавель девелопер

Google
Артур Евгеньевич
05.09.2018
16:10:35
f4rt~
05.09.2018
16:10:57
аа, ну эт хуйню я не использую
вроде, если хочешь в сф комманду запихнуть контейнер, вариант сделать тупо и быстро отнаследоваться от какой-то байды которая внутри себя это делала upd ContainerAwareCommand во

эх соскучился я по симфе
да вы вроде не заложники, отдельные сервисы ж пофиг на чем писать

Alexander
05.09.2018
16:12:49
вопрос: нахуя setContainer нужен? что бы потом вызывать $this->container->get?

f4rt~
05.09.2018
16:13:18
объективно говоря я слышал на протяжении двух версий что его хотят деприкейтнуть вообще

Alexander
05.09.2018
16:13:33
только то, что явно в конфиге как паблик объявлено

Admin
ERROR: S client not available

f4rt~
05.09.2018
16:13:48
да и симфони все больше пропагандирует что бы не лазить в контейнер за зависимостями а получать аргументом в метод

Артур Евгеньевич
05.09.2018
16:14:03
в 4 уже не всё можно так дернуть
вроде это не только в 4

f4rt~
05.09.2018
16:14:24
а у меня от синтаксиса приватных сервисов бомбит, могли флаг какой-то в ямле сделать

Maksim
05.09.2018
16:14:59
Все любители впихнуть сеттеры для зависимостей должны кодить на мадженте. Им там самое место. Особенно с аргументацией а стиле "что б в конструкторе меьше было". Мусор под коврик замели и типа порядок, бгг. Ещё бОльший треш разведя

Maksim
05.09.2018
16:15:40
Артур Евгеньевич
05.09.2018
16:15:44
или нет?

f4rt~
05.09.2018
16:16:04
так там же есть public: true/false
когда я последний раз смотрел было с точкой

Google
Maksim
05.09.2018
16:16:21
Артур Евгеньевич
05.09.2018
16:16:42
я вообще щас на своем отдельном проекте на пхп пишу конфиги

$services->set(DemandsElasticityAbTestService::class) ->args( [ ref(MemberTestingMapper::class), ref(GroupChooser::class), ] ) ->public();

Maksim
05.09.2018
16:16:49
Ток за паблик тру опять таки надо по рукам бить в 99% случаев

Артур Евгеньевич
05.09.2018
16:17:11
фигня конечно, но в отстутсвии йамла сойдет

лучше чем массивы

Alexander
05.09.2018
16:17:22
Ток за паблик тру опять таки надо по рукам бить в 99% случаев
с учетом, что можно через локатор разрулить, то наверное в 99.9999999% случаев

f4rt~
05.09.2018
16:17:38
так там же есть public: true/false
действительно, хм видимо комьюнити взяло свое,а я не следил так как другую версию на работе юзают :)

Артур Евгеньевич
05.09.2018
16:18:29
с учетом, что можно через локатор разрулить, то наверное в 99.9999999% случаев
да единственный случай, когда работаешь с легаси в которое нельзя прокинуть зависимости и тебя надо как то получить сервис котоырй ты написал

Maksim
05.09.2018
16:18:45
с учетом, что можно через локатор разрулить, то наверное в 99.9999999% случаев
Я вот даже не уверен, что публичные сервисы чем-то хуже сеттеров для зависимостей, так-то

Alexander
05.09.2018
16:19:53
Я вот даже не уверен, что публичные сервисы чем-то хуже сеттеров для зависимостей, так-то
сам факт того, что что-то помечено паблик — нейтральный. а вот когда кто-то начинает вызывать $this->container->get, вот тогда надо убивать с особой жестокостью

Артур Евгеньевич
05.09.2018
16:19:57
ну если первые дают нам потенциальную возможность говнокодить, то вторые это уже гавнокод, котоыре дают нам потенциальную возможность написать код с ошибками

Maksim
05.09.2018
16:20:35
Если у тебя зависимости в конструктор не влезают, то это проблема разделения ответственности и сеттерами она не рншается. Вооьще никак

Alexander
05.09.2018
16:20:36
Артур Евгеньевич
05.09.2018
16:20:47
нет нельзя)

если ты создаешь лазейку для гавнокода, то кто нибудь обязательно ее использует

это тоже самое как принести топор в компанию алкашей

Alexander
05.09.2018
16:21:27
вот когда кто-то вызвал, то первым делом git blame, вторым — разогревание кочерги на плите с последующем погружением в анус того, что вызвал

Артур Евгеньевич
05.09.2018
16:21:33
а потом говорить, ну сам топор то зла не сделал, я его просто принёс и никого не убивал

Alexander
05.09.2018
16:21:51
это тоже самое как принести топор в компанию алкашей
а может я дровосек и по пути с работы к корешам зашел

это как "оружие убивает"

Артур Евгеньевич
05.09.2018
16:22:12
ок сойдемся на том что публик сервисы пишут дровосеки)

Страница 1283 из 1387