【问题标题】:PHP-DI container configurationPHP-DI 容器配置
【发布时间】:2020-01-20 01:12:23
【问题描述】:

这是我之前的问题(范围很差)的后续问题,这让我意识到我需要了解更多关于 DI 的知识:

Dependency injection, composition root, and entry points

  1. 谁能解释一下 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);
    },
];
  1. 特别是关于 DI 和自动布线概念,如果我也有 SQLArticleRepositoryArticleRepository 实现怎么办?如何使用运行时值在存储库类型之间进行选择?

【问题讨论】:

    标签: php dependency-injection php-di


    【解决方案1】:

    检查该部分 使用容器和依赖注入的规则 在这个链接http://php-di.org/doc/best-practices.html

    您需要提供类型提示,让 di 容器知道该函数需要什么接口实现。此外,您还必须在 di 容器中注册/自动装配该实现。

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 2019-02-18
      • 2020-04-24
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多