
10.05.2022, 22:15
|
|
Постоянный
Регистрация: 01.03.2016
Сообщений: 828
С нами:
5368054
Репутация:
448
|
|
Сообщение от EasyGameProtection
DI является лишь частным случаем IoC. В качестве примера можете посмотреть реализацию в Symfony The DependencyInjection Component (Symfony Docs)
Покажите пример, так как по описанию выглядит подозрительно, будто Вы реализовали не DI, а Service Locator.
Предметная область не должна ничего знать о том, как Вы управляете зависимостями.
Ну к примеру вот кусок кода с документации php-di.
PHP:
Код:
$container
=
new
Acclimate\Container\CompositeContainer
(
)
;
// Add Symfony's container
$container
-
>
addContainer
(
$acclimate
-
>
adaptContainer
(
$symfonyContainer
)
)
;
// Configure PHP-DI container
$builder
=
new
\DI\ContainerBuilder
(
)
;
$builder
-
>
wrapContainer
(
$container
)
;
// Add PHP-DI container
$phpdiContainer
=
$builder
-
>
build
(
)
;
$container
-
>
addContainer
(
$phpdiContainer
)
;
// Good to go!
$foo
=
$container
-
>
get
(
'foo'
)
;
Метод get не имеет представление какой тип данных возвращается, и поэтому ide не видит публичных методов, свойств и т.п. Приходится работать вслепую, либо при каждом использовании дописывать аннотации. Как обычно решают данную проблему?
|
|
|