19declare(strict_types=1);
33 private static $services = [];
35 private function get(
string $class_name) :
object
37 if (!$this->
has($class_name)) {
38 self::$services[$class_name] =
new $class_name();
41 return self::$services[$class_name];
46 if (!$this->
has($class_name)) {
47 self::$services[$class_name] =
new $class_name($argument);
50 return self::$services[$class_name];
55 if (!$this->
has($class_name)) {
56 $i =
new ReflectionClass($class_name);
58 self::$services[$class_name] =
$i->newInstanceArgs($arguments);
61 return self::$services[$class_name];
64 private function has(
string $class_name) : bool
66 return isset(self::$services[$class_name]);
An exception for terminatinating execution or to throw for unit testing.
@noinspection PhpIncompatibleReturnTypeInspection
trait SingletonTrait
Class SingletonTrait.
getWithArgument(string $class_name, $argument)
getWithMultipleArguments(string $class_name, array $arguments)