Как видно из примера здесь
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
's конструктор ($engine
).
С этим проблем нет, но что если однажды автор Car
решит изменить имя переменной параметра своего конструктора на что-то другое (например, public function __construct(Engine $motor)
)?Это сломало бы инжектор.
Есть ли способ избежать этого, возможно, определить по позиции вместо литеральных имен параметров?