Ещё вот вопрос по типам биндингов.
Может есть ещё какие-то юзкейсы. Я пока вижу это так:
// биндинг абстрактного типа к константному значению
$container->bind(FooInterface::class)
->toConstant(new Foo());
// биндинг абстрактного типа к конкретной реализации
$container->bind(FooInterface::class)
->to(Foo::class);
// биндинг конкретной реализации к себе самой
$container->bind(Foo::class)
->toSelf();
// альяс к существующему биндингу
$container->bind(FooInterface::class)
->toAlias(Foo::class);
// биндинг абстрактного типа к фабрике, в качестве фабрики любой callable
$container->bind(FooInterface::class)
->toFactory(function () {
return new Foo();
});