Это продолжение моего предыдущего вопроса (который был плохо определен), который заставил меня понять, что мне нужно больше узнать о DI:
Внедрение зависимостей, корень композиции и точки входа
- Может ли кто-нибудь объяснить, какой аспект внедрения зависимостей и связанных с ним концепций имеет место в демо-версии 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
? Как я могу использовать значение времени выполнения для выбора между типом репозитория?