Как видно из примера Вот
interface Engine {}
class V8 implements Engine {}
class Car {
private $engine;
public function __construct(Engine $engine) {
$this->engine = $engine;
}
}
$injector = new Auryn\Injector;
$injector->define('Car', ['engine' => 'V8']);
$car = $injector->make('Car');
В соответствии $injector->define('Car', ['engine' => 'V8']);
, engine
буквально основан на имени переменной параметра Car
конструктор ($engine
).
Там нет проблем с этим, но что, если когда-нибудь, автор Car
решил изменить имя переменной параметра своего конструктора на что-то другое (например, public function __construct(Engine $motor)
)? Это сломало бы инжектор.
Есть ли способ избежать этого, возможно, определить по позиции вместо литеральных имен параметров?
Задача ещё не решена.
Других решений пока нет …