Внедрение правильного конфига с Auryn - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть сценарий использования, в котором мы используем 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

и мне нужно было в каждом конкретном случае определить, получаю ли я V8 или гибрид из Auryn, когда он устанавливает свои зависимости?

Это надуманный пример, основанный на документации Auryn, в реальном коде класс требует передачи конфигурации при создании. Однако основная проблема та же.

1 Ответ

0 голосов
/ 17 ноября 2018

Вы можете использовать $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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...