【发布时间】:2020-01-20 01:12:23
【问题描述】:
这是我之前的问题(范围很差)的后续问题,这让我意识到我需要了解更多关于 DI 的知识:
Dependency injection, composition root, and entry points
- 谁能解释一下 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实现怎么办?如何使用运行时值在存储库类型之间进行选择?
【问题讨论】:
标签: php dependency-injection php-di