@symfony_php

Страница 353 из 1418
Алексей
24.10.2017
10:47:09
Он автовайра один шаг к фасадам

Sergey
24.10.2017
10:47:34
абсолютно разные вещи

Алексей
24.10.2017
10:47:43
Разные

но шаг один

Google
Sergey
24.10.2017
10:47:55
есть Spring IoC и Guice в джава мире, где тоже во главе угла стоит автовайринг. и живут же как-то

в том веке все писали на xml

Алексей
24.10.2017
10:48:15
Именно как-то

Sergey
24.10.2017
10:48:19
и больше не хотят вспоминать те времена

Алексей
24.10.2017
10:48:22
Джава не показатель

тем более спринг

Andrew
24.10.2017
10:50:11
:D

Владимир
24.10.2017
10:50:15
Джава не показатель
Симфони с доктриной чуть меньше чем полностью вдохновлена аналогами из джавы, если что ))

Алексей
24.10.2017
10:50:34
https://www.reddit.com/r/PHP/comments/6oxuo3/what_do_you_thing_about_autowiring_in_symfony/dklnh2b/

For example, imagine you crafted a real nice service with a single implementation, that you need to inject somewhere. After a while, someone notices your service but creates an alternative implementation for some reason. By just declaring this new bean in the context, along with the former, it will break container initialization! Worse, it may be done in an entirely different part of the application, with seemingly no link with the former. At this point, good luck to analyze the reason of the bug.

Автовайр на практике хорош только для мелких проектов или отдельных Классов типа репозиториев

Но в кровавом энтерпрайзе это геморой

Google
Алексей
24.10.2017
10:52:35
Это как мы пытались на phalcon писать энтерпрайз

Andrew
24.10.2017
10:52:42
а что мешает иметь автовайринг включенным по дефолту, но конфигурировать ручками то что нужно?

Алексей
24.10.2017
10:52:59
ничего

так и нужно

Алексей
24.10.2017
10:53:16
Я курить

Это как наркотик

тут аключил автовайр

А завтра и там включишь

и там

и там

и все

ты автовайр наркоша

Andrew
24.10.2017
10:54:24
хорошая дискуссия и аргументы железобетонные

Boris
24.10.2017
10:54:46
в умелых руках и .. молоток =)

Sergey
24.10.2017
10:56:41
у нас опыт противоположный, размер кодовой базы 500к+ строк

Google
Urmat
24.10.2017
10:56:43
Я вот послушался ваших советов, и решил перекинуть репозитерии в сервисы. Для этого, я: 1) Создал один интерфейс(CityRepositoryAwareInterface) и трейт(CityRepositoryAwareTrait), чтобы в нужном место просто подключить их и не дублировать. 2) В нужном контроллере подключил сервисы: services: ApiBundle\Controller\CityController: calls: - [ setCityRepository, ['@Klabs\Sale\CommonBundle\Aware\CityRepository\CityRepositoryInterface']] 3) Непосредственно указываю, что это данный рпеозиторий является сервисом: services: Klabs\Sale\CommonBundle\Aware\CityRepository\CityRepositoryInterface: class: Klabs\Sale\CommonBundle\Repository\CityRepository arguments: ["@doctrine.orm.entity_manager", '@metadata']

Sergey
24.10.2017
10:57:00
единственное чего не хватало так это иньекции коллекции по интерфейсу, но в 3.4 сделли иньекцию по тегу

Sergey
24.10.2017
10:58:18
а зачем CityRepositoryAwareTrait?

Urmat
24.10.2017
10:58:25
А не знаю, что это за класс?

а зачем CityRepositoryAwareTrait?
Чтобы в нужном месте просто вставить этот трейт и обращаться к его свойству

Sergey
24.10.2017
11:00:07
Чтобы в нужном месте просто вставить этот трейт и обращаться к его свойству
не лучшая затея. в конструкторе укажи просто CityRepositoryInterface , без всяки трейтов и сеттеров

Владимир
24.10.2017
11:00:45
Читал, что трейты в PHP - зло, так как не являются чистыми mixin-ами, а являются костылями для кривокруких

Аргументы, правда, не помню

Urmat
24.10.2017
11:01:03
Владимир
24.10.2017
11:01:03
?

Алексей
24.10.2017
11:01:39
Так что автовайр - добро или зло?

Urmat
24.10.2017
11:01:48
не лучшая затея. в конструкторе укажи просто CityRepositoryInterface , без всяки трейтов и сеттеров
Для меня легче, чтобы все это хранилось отдельно в конфиге. А в классах смотреть только непосредственно сами методы и реализация

Sergey
24.10.2017
11:02:09
Я просто хз, насколько оно разрастется(конструктор)
если разростается, то значит уже проблемы с зависимостями и пора разбивать класс

Urmat
24.10.2017
11:02:12
Вопрос в том, что как узнать название сервиса по класссу? (Doctrine\ORM\Mapping\ClassMetadata)

Алексей
24.10.2017
11:02:16
нужен бот для голосования

Алексей
24.10.2017
11:03:16
Autowiring это... Добро – 60 ??????? 92% Зло – 5 ? 8% ? 65 people voted so far.

Google
Andrew
24.10.2017
11:04:06
Вопрос в том, что как узнать название сервиса по класссу? (Doctrine\ORM\Mapping\ClassMetadata)
это не сервис, тебе нужно доктриновские репосы через фабричный метод инициализировать -

Sergey
24.10.2017
11:04:09
Контроллер?
да, а чего бы и нет

Urmat
24.10.2017
11:05:20
да, а чего бы и нет
Просто я и так стараюсь чтобы контроллер был "тонким", куда еще хз.

Алексей
24.10.2017
11:05:58
Это как?
выше было

Admin
ERROR: S client not available

Roman
24.10.2017
11:06:44
а почему зло? какие аргументы против? что я пропустил?

Sergey
24.10.2017
11:06:53
пс. сорян что с нотифаем

Roman
24.10.2017
11:07:23
не, норм

Bohdan
24.10.2017
11:07:36
Читал, что трейты в PHP - зло, так как не являются чистыми mixin-ами, а являются костылями для кривокруких
главный косяк трейтов, который обнаружил - это то, что они, по сути - это тупо внутренний копипаст

Владимир
24.10.2017
11:07:43
Да ну! В телеграмме есть возможность голосования?

Bohdan
24.10.2017
11:07:52
через ботов)

Владимир
24.10.2017
11:07:56
Я еще дикий - месяц пользуюсь

Bohdan
24.10.2017
11:08:08
в телеграме есть все через ботов

Владимир
24.10.2017
11:08:59
Чьёрд! Да это же викторину можно устроить и призы победившим, систему прокачки- ветераны, новички

Oleg
24.10.2017
11:09:14
На средне/малых проектах автовайринг однозначо добро. Но на больших проектах имхо его полезность сомнительна. Я за явный конфиг.

Алексей
24.10.2017
11:09:20
Better practice? That will not last for long. We always lag the Java community by a few years, so now as autowiring is becoming hot in PHP, the Java community has been burned by the resulting dependency spaghetti are calling it an anti-pattern. It's a very tiresome cycle: "best silver bullet ever!" and then "worst anti-pattern ever!". I'm not saying "do not use autowiring at all" (although I do not), but stay conservative and never ever allow your code to be dictated by the autowiring features. Never change how you design an object because of autowiring. And I'm afraid this is easier said.

Google
Владимир
24.10.2017
11:10:56
Кажется я открыл для себя нищщу для игроделов - текстовые квесты в телеграмме

Urmat
24.10.2017
11:11:03
главный косяк трейтов, который обнаружил - это то, что они, по сути - это тупо внутренний копипаст
Но в моем то случае не вредит же? То есть, предположим, что этот репозиторий используется в десяти контроллерах. И однажды я решил его изменить. По сути, мне будет нужно изменить только в одном месте, нежели в 10

Алексей
24.10.2017
11:11:09
Autowiring это штука более для автоматизации чем для надежности

Bohdan
24.10.2017
11:11:34
Autowiring это штука более для автоматизации чем для надежности
да, тут все опять-таки сводится к непреложной истине - повышение гибкости ведет к увеличению сложности

Алексей
24.10.2017
11:12:16
А про простоту

Ну и он более медленный

Так как использует рефлексию

Sergey
24.10.2017
11:13:09
Bohdan
24.10.2017
11:13:15
более медленный - на этапе сборки контейнера

Sergey
24.10.2017
11:13:25
конечный контейнер одинаковый выходит

Алексей
24.10.2017
11:13:34
Ну тут спорить не буду

Sergey
24.10.2017
11:13:49
а сборка медленнее на 20-30% это да

Владимир
24.10.2017
11:13:52
Так как использует рефлексию
А конфиги как буд то проще читать, чем классы ))

Страница 353 из 1418