Size: a a a

2020 March 08

T

TradersVE in Yii Framework 3
Dmitriy S
Смысл идеи в том, что каждый модуль имеет как глобальные сервисы, которые будут доступны для всех, так и локальные сервисы/зависимости, которые будут доступны только внутри модуля, таким образом мы не будем перегружать основной контейнер лишними зависимостями.
источник

Д

Дмитрий in Yii Framework 3
Dmitriy S
Для автоматической установки дебагера  в приложение  index.php сейчас выглядит так
https://i.imgur.com/oMaqJBn.png
По дефолту подключается с прокси. Можно еще сделать чтобы сразу  и все включалось (надо ли?), пока же надо вручную прописать в параметрах 'debugger.enabled' => true для начала отладки. Также можно переопределить сервис-провайдер дебагера в файле config/providers.php и подключить дебагер без прокси.
Шота как-то создать контейнер и взять из него контейнер смотрится дико
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Смысл идеи в том, что каждый модуль имеет как глобальные сервисы, которые будут доступны для всех, так и локальные сервисы/зависимости, которые будут доступны только внутри модуля, таким образом мы не будем перегружать основной контейнер лишними зависимостями.
Как это будет происходить? Нужно будет сервис провайдеры на модуль создавать для локальных?
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
Шота как-то создать контейнер и взять из него контейнер смотрится дико
К сожалению, я пока не придумал как по-другому автоматом подключить прокси не упоминая при этом его вообще в в основном приложении, если знаешь - подскажи. Для оригинального  дебагера та вторая строчка не нужна, но без нее контейнер не обернется в прокси автоматом.
источник

T

TradersVE in Yii Framework 3
I think we are going on the right route, if we can solve the routes automatically, we would have the modules of yii2 in yii3, something that for me is excellent and that even Laravel does not have.
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
Как это будет происходить? Нужно будет сервис провайдеры на модуль создавать для локальных?
Нет, будет еще конфиг-файл modules.php в котором каждый пакет будет описывать модули, которые в нем есть, включая их роуты. Потом ModuleAutoloader middleware будет их регистрировать и создавать локальные контейнеры для каждого модуля. Таким образом модули не будут знать друг о друге за исключением глобально зарегистрированных сервисов через конфиг-файл providers.php
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Нет, будет еще конфиг-файл modules.php в котором каждый пакет будет описывать модули, которые в нем есть, включая их роуты. Потом ModuleAutoloader middleware будет их регистрировать и создавать локальные контейнеры для каждого модуля. Таким образом модули не будут знать друг о друге за исключением глобально зарегистрированных сервисов через конфиг-файл providers.php
При этом ещё останутся web, common, console?
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
При этом ещё останутся web, common, console?
Останутся, но в них будут только публичные сервисы модуля. То есть, то что мы хочем отдать наружу для взаимодействия с модулем. Все внутренние сервисы/зависимости будут зарегистрированы в локальном контейнере. Котнейнер модуля будет представлять из себя композитный контейнер, который состоит из глобального контейнера (для разрешения глобальных зависимостей) и локального, который будет содержать зависимости, которые используются только внутри модуля.
источник

Д

Дмитрий in Yii Framework 3
Dmitriy S
Останутся, но в них будут только публичные сервисы модуля. То есть, то что мы хочем отдать наружу для взаимодействия с модулем. Все внутренние сервисы/зависимости будут зарегистрированы в локальном контейнере. Котнейнер модуля будет представлять из себя композитный контейнер, который состоит из глобального контейнера (для разрешения глобальных зависимостей) и локального, который будет содержать зависимости, которые используются только внутри модуля.
Можно пример такого контейнера ? Такого в уии2 нет?
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
Можно пример такого контейнера ? Такого в уии2 нет?
В оригинальном yii2 нет, но я юзаю этот подход в своей эмм... не знаю как ее назвать, наверное cmf, которая построена на основе yii2.
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Останутся, но в них будут только публичные сервисы модуля. То есть, то что мы хочем отдать наружу для взаимодействия с модулем. Все внутренние сервисы/зависимости будут зарегистрированы в локальном контейнере. Котнейнер модуля будет представлять из себя композитный контейнер, который состоит из глобального контейнера (для разрешения глобальных зависимостей) и локального, который будет содержать зависимости, которые используются только внутри модуля.
Ну это будет уже внутрянка. Как разработчик модуля я ничего не почувствую (кроме новых конфигов) и буду орудовать всё тем же интерфейсом контейнера.
А что будет, если запросить локальный сервис какого нибудь другого модуля? Будет два инстанса?
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
Ну это будет уже внутрянка. Как разработчик модуля я ничего не почувствую (кроме новых конфигов) и буду орудовать всё тем же интерфейсом контейнера.
А что будет, если запросить локальный сервис какого нибудь другого модуля? Будет два инстанса?
Ты не сможешь запросить локальный сервис модуля. Только те что ты явно зарегаешь в основном контейнере.
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Ты не сможешь запросить локальный сервис модуля. Только те что ты явно зарегаешь в основном контейнере.
Будет исключение? А как же автовайринг?
источник

А

Алексей R in Yii Framework 3
Т.е. будет проверка на то, что это только локальный сервис? И если да, то исключение, если нет, то автовайринг
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
Будет исключение? А как же автовайринг?
Ну, ты теоретически сможешь запросить какой-то класс, поскольку так уж у нас контейнер работает (хотя мне это и не особо нравится), но не факт, что его получишь, только если его можно инстанцировать без локальных зависимостей.
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
Т.е. будет проверка на то, что это только локальный сервис? И если да, то исключение, если нет, то автовайринг
В идеале нужно убрать с контейнера автоматическое инстанцирование класса, если он сущестует, то есть его надо задавать в контейнере явно, тогда такой проблемы не будет.
источник

А

Алексей R in Yii Framework 3
Т.е. привет сервис провайдеры и прощай автовайринг
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
Т.е. привет сервис провайдеры и прощай автовайринг
Автоваеринг будет в пределах модулей и зарегестрированных глобальных зависимостей.
источник

А

Алексей R in Yii Framework 3
А можно ещё чекать по всем локальным контейнерам )
источник

T

TradersVE in Yii Framework 3
Алексей R
Т.е. привет сервис провайдеры и прощай автовайринг
😡
источник