使用Auryn注入正确的配置

时间:2018-09-06 14:50:24

标签: php dependency-injection auryn

我有一个用例,其中我们使用Auryn连接我们的类,并且我需要根据参数的值注入不同的配置类。

Auryn的文档提供了一个注入依赖项的示例:

interface Engine {}
class V8 implements Engine {}
class Car {
    private $engine;
    public function __construct(Engine $engine) {
        $this->engine = $engine;
    }
}

$injector = new Auryn\Injector;

// Tell the Injector class to inject an instance of V8 any time
// it encounters an Engine type-hint
$injector->alias('Engine', 'V8');

$car = $injector->make('Car');
var_dump($car instanceof Car); // bool(true)

但是如果我也有

class Hybrid implements Engine

,我需要根据具体情况确定在依赖Auryn时是否获得V8或Hybrid。

这是一个基于Auryn文档的精心设计的示例,在实际代码中,该类要求在构造时传递配置。但是基本问题是相同的。

1 个答案:

答案 0 :(得分:0)

您可以像这样使用$injector->define()

<?php
$injector = new Auryn\Injector;
$injector->define('Car', ['engine' => 'Hybrid']);
$car = $injector->make('Car');

var_dump($car instanceof Car); // true

链接:https://github.com/rdlowrey/auryn#injection-definitions