Singleton is a creational design pattern that lets you ensure that a class has only one instance, while providing a global access point to this instance.
Read more
Now you can set classes or objects as singletons
Useful to share database connections, API clients or loggers
use flight\Container;
$container = new Container;
$container->singleton(DateTimeImmutable::class);
$dt1 = $container->get(DateTimeImmutable::class);
$dt2 = $container->get(DateTimeImmutable::class);
$dt1 === $dt2; // <-- trueYou can also set objects as singletons
use flight\Container;
$container = new Container;
$initialObject = new DateTimeImmutable;
$container->singleton($initialObject);
$objectFromContainer = $container->get(DateTimeImmutable::class);
$initialObject === $objectFromContainer; // <-- trueNote
Now you can chain methods on container instance
use flight\Container;
$container = new Container;
$container
->set(sqlite3::class, fn() => new sqlite3(':memory:'))
->singleton(mysqli::class, fn() => new mysqli('localhost', 'root'))
->set(PDO::class, fn() => new PDO('sqlite::memory:'));Full Changelog: v1.1.0...v1.2.0
