Я создал очень простой контейнер для инъекций. Я могу создать экземпляр класса, говоря:Сервисный локатор для контейнера DI
$foo = $container->get(Foo::class);
Это работает хорошо и позволяет мне вводить зависимости в конструкторе Foo в. Теперь я хочу, чтобы создать экземпляр класса, говоря:
$user = new User();
Мне нужно, чтобы иметь возможность получить доступ к службе из контейнера внутри класса User, но я не уверен, что лучший способ сделать это. Два пути, которые я хотел бы избежать, - это передача контейнера в конструктор, а во-вторых, использование метода get контейнера, как показано выше, для создания экземпляра Foo.
Я был бы признателен, если бы кто-нибудь мог показать мне правильный способ достичь этого. Спасибо
Спасибо, но я не хочу делать это так либо иначе, как я должен изменить свой вызов, чтобы создать пользовательский экземпляр. В идеале мне нужен статический аксессор, но я не уверен, как это сделать, чтобы он делил те же экземпляры (хранящиеся как массив) внутри моего контейнера. – nfplee