$sys = new Container();
Далее класс считывает конфиг, где прописано как создавать объект, его аргументы конструктора и т.д.
При первом обращении к сервису вида
$sys->get(Request::class);
//или по псевдониму как $sys->request
Контейнер создаст объект следуя правилам в конфиге.
Динамически можно регистрировать сервисы через замыкания
$sys->notInitService = function(Container $c) {
return new NewService($c->get(ServiceArg::class));
}
Может ли оно вообще так работать. В сети тонна информации и статей, которые нивелируются по смыслу и найти внятное объяснение DI весьма трудно