php - PHP-DI 容器配置
问题描述
这是我之前的问题(范围很差)的后续问题,这让我意识到我需要了解更多关于 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
呢?我如何能够使用运行时值在存储库类型之间进行选择?
解决方案
检查 此链接http://php-di.org/doc/best-practices.html中使用容器和依赖注入的规则部分
您需要提供类型提示,让 di 容器知道该函数需要什么接口实现。此外,您还必须在 di 容器中注册/自动装配该实现。
推荐阅读
- python - 使用 altair 在单个地图上绘制空间数据
- statistics - 如何比较两个卡方结果?
- java - 尝试插入 sqlitedatabase 时出现多个错误
- android - Flutter:构建时缺少图像
- postgresql - 即使数据库版本匹配,如何强制 FluentMigrator 运行迁移
- google-bigquery - 如何在十进制数字中添加一个逗号?
- javascript - 画布绘图通过正确的属性设置偏移
- c++ - 将 c-string 直接写入 std::string
- python - 在递归函数中附加到一个列表
- java - 在我的 javafx 程序中将数组列表添加到选择框中