Skip to content

v1.2.0 FlightPHP/Container - Support for singletons

Latest

Choose a tag to compare

@fadrian06 fadrian06 released this 22 Mar 21:12
· 1 commit to main since this release

Singleton example

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; // <-- true

You 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; // <-- true

Note

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