这是我之前的问题(范围很差)的后续问题,这让我意识到我需要了解更多关于 DI 的知识:
- 有人能解释一下 PHP-DI Demo 中依赖注入的哪些方面和相关概念吗?如果容器支持自动装配,下面显示的配置是什么?
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
呢?我如何能够使用运行时值在存储库类型之间进行选择?