Это продолжение моего предыдущего вопроса (который был плохо определен), который заставил меня осознать, что у меня есть больше, что мне нужно, чтобы узнать о DI:
Инъекция зависимости, состав root, и точки входа
- Может кто-нибудь объяснить, какой аспект внедрения зависимостей и связанных с ними концепций имеет место в демоверсии PHP -DI? Какая конфигурация показана ниже, даже если требуется, чтобы контейнер поддерживал автоматическое подключение?
https://github.com/PHP-DI/demo
В частности, я вижу, что демонстрационная версия выглядит используя настройку автоматического подключения по умолчанию (т.е. включена), но конфигурация все еще выполняется, например:
https://github.com/PHP-DI/demo/blob/master/app/config.php
use function DI\create;
use SuperBlog\Model\ArticleRepository;
use SuperBlog\Persistence\InMemoryArticleRepository;
use Twig\Environment;
use Twig\Loader\FilesystemLoader;
return [
// Bind an interface to an implementation
ArticleRepository::class => create(InMemoryArticleRepository::class),
// Configure Twig
Environment::class => function () {
$loader = new FilesystemLoader(__DIR__ . '/../src/SuperBlog/Views');
return new Environment($loader);
},
];
Что касается DI и концепций автоматического подключения, что, если у меня также была
SQLArticleRepository
реализация
ArticleRepository
? Как я могу использовать значение времени выполнения для выбора типа репозитория?