@symfony_php

Страница 655 из 1418
Kirill
19.02.2018
18:48:54
ща на гист залью

https://gist.github.com/SerafimArts/d3c3287f97b080f9e8dea85092af8a7c

Вот

У меня есть два типа аутентификации, по жвт токену и по хедеру (беарарер)

Google
Kirill
19.02.2018
18:50:27
по дефолту надо юзать токен, но в одной (или нескольких) из реализаций надо использовать другую реализацию

я хотел не париться и тупо для алиаса (интерфейса) прописать тег и его ловить в комапйл пассе

но...

но нельзя

Bohdan
19.02.2018
18:51:27
чтобы у разных алиасов одного сервиса были разные теги?

Kirill
19.02.2018
18:51:37
нет

задача не выставить тег

задача прочитать метадату интерфейса (алиаса) и разрулить реализации

тег - это один из способов, о которых я знаю, и который нихрена не работает для алиасов

ещё мне приходит на ум юзать autowiring_type, вместо алиаса

тогда с тегами будет всё ок

Bohdan
19.02.2018
18:54:30
все равно непонятно из гиста

его разве не убрали?

Google
Kirill
19.02.2018
18:54:47
кого?

Bohdan
19.02.2018
18:55:12
autowiring_type ну зависит ещё от версии симфони у тебя

Kirill
19.02.2018
18:55:35
у меня древняя, всё никак не могу апнуться

этот тип задепрекейтили чтоль?

а, да, в 3.3

я слоу

хм

Короче, ещё раз задача: 1) Есть интерфейс и две реализации. 2) Хочется добавить просто метадату для интерфейса и где-то потом её прочитать. 3) Интерфейс указывается алиасом на дефолтную реализацию (одну из двух).

Вот и всё

у меня идей нет

=\

есть идея переопределить класс Alias

но это чот вообще печаль тогда

Andrew
19.02.2018
19:01:02
Переписать проект

kekenec
19.02.2018
19:01:53
Может кто-нибудь пояснить за ServiceValueResolver (который должен резолвить аргументы контроллера в роутере)? Почему мы ищем в контейнере сервисы с id вида FQCN::Action вместо FQCN? Почему далее ищем сам сервис не по типу (хотя суть в type-hinting же, не?), а по имени переменной?

Kirill
19.02.2018
19:03:35
@BonBonSlick так я и переписываю как раз)

просто пытаюсь чуть улучшить этот убогий симфонёвый контейнер)

Andrew
19.02.2018
19:04:02
он там получше ларавел

Kirill
19.02.2018
19:04:17
ну, кажется что нет

хотя

Google
Kirill
19.02.2018
19:05:15
@BonBonSlick так как в симфоне сделать контекстуальный биндинг?

Andrew
19.02.2018
19:05:19
если в плане разработчика, то контейнер симфони лучше, мы его сами вертим как хотим

Kirill
19.02.2018
19:05:50
окок

лучше

так как предоставить в конкретном месте конкретную реализацию по интерфейсу, а в остальных (местах) другие реализации?

только автовайрингом

Andrew
19.02.2018
19:07:43
думаю вам что то в таком роде

https://symfony.com/doc/current/service_container/service_decoration.html

Kirill
19.02.2018
19:07:57
мимо

не оно

т,е. сказать контейнеру: "Когда Х или его потомки требуют сервис Y предоставить ему другую реализацию"

как в ларке: ->when(ExampleController::class)->needs(SomeRepoInterface::class)->give(SomeDBRepo::class)

Kirill
19.02.2018
19:10:32
и когда резволится ExampleController ему внедряется другая реализация

@BonBonSlick это пример того почему симфонёвый контейнер - это огрызок

Andrew
19.02.2018
19:11:17
Никогда не занимался таким

Kirill
19.02.2018
19:11:19
)

не занимался, потому что в симфоне этого нету

Andrew
19.02.2018
19:11:41
Да и в ларе не делал

Dinar
19.02.2018
19:11:52
А зачем ты пытаешься такое делать?

Andrew
19.02.2018
19:11:58
Как по мне, усложняет понимание програмы

Google
Kirill
19.02.2018
19:12:02
у меня есть два типа аутентификации

Dinar
19.02.2018
19:12:09
Я это понял.

Kirill
19.02.2018
19:12:15
нужно в одном месте её подменить на другую реализацию

Dinar
19.02.2018
19:12:20
Но в целом это выглядит нездорово

Kirill
19.02.2018
19:12:25
почему?

вход с помощью ключика для получения токена

Dinar
19.02.2018
19:12:49
Ну потому что ты как будто бы пытаешься упростить, а на самом деле создаёшь костыль.

Kirill
19.02.2018
19:12:52
и вход с помощью токена для выполнения запросов

я пытаюсь работать с интерфейсами

Admin
ERROR: S client not available

Kirill
19.02.2018
19:13:18
ну т.е. реализовать слабую связанность

Dinar
19.02.2018
19:13:29
Ну укажи явно зависимости.

Эти.

Kirill
19.02.2018
19:13:40
это уже явные зависимости

Dinar
19.02.2018
19:13:53
На уровне конфигов

Kirill
19.02.2018
19:14:00
конфигов?

Dinar
19.02.2018
19:14:08
Да. :)

Kirill
19.02.2018
19:14:17
ну это уже костыль

=(

Dinar
19.02.2018
19:14:28
Разве?

Google
Kirill
19.02.2018
19:14:33
ну т.е. сервис в одном месте, а конфиги для него в другом?

или что имеется ввиду?

Dinar
19.02.2018
19:14:55
Так ты сервисы же в ямле задаёшь

Kirill
19.02.2018
19:15:07
ну да

только класс, куда надо подсунуть реализацию - это не сервис)

Dinar
19.02.2018
19:15:23
Ну вот там и пропиши зависимость для этого.

Kirill
19.02.2018
19:15:33
т.е. его нет в контейнере

Dinar
19.02.2018
19:15:44
Контроллер можно как сервис юзать.

Kirill
19.02.2018
19:16:05
это не контроллер

Dinar
19.02.2018
19:16:30
Просто иногда дублирование - это не всегда плохо. :)

Kirill
19.02.2018
19:17:51
короче, не важно

никак, не добавить метку для алиаса, значит никак

буду знать, спасибо

чорт

сегодня очередной день **** с симфонёй. Вначале defaults в роутах не наследуются, теперь ничего не сделать с алиасами контейнера

не фрейм, а CMS какая-то :D

шаг влево, шаг вправо и всё рушится

Dinar
19.02.2018
19:19:41
:)

Но все очень явно и без магии зато.

Это большое преимущество для больших систем.

Kirill
19.02.2018
19:20:20
ну...

хз

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