ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
SingletonTrait.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\GlobalScreen;
22
23use ReflectionClass;
24
30{
31 private static array $services = [];
32
33 private function get(string $class_name): object
34 {
35 if (!$this->has($class_name)) {
36 self::$services[$class_name] = new $class_name();
37 }
38
39 return self::$services[$class_name];
40 }
41
42 private function getWithArgument(string $class_name, $argument): object
43 {
44 if (!$this->has($class_name)) {
45 self::$services[$class_name] = new $class_name($argument);
46 }
47
48 return self::$services[$class_name];
49 }
50
51 private function getWithMultipleArguments(string $class_name, array $arguments): object
52 {
53 if (!$this->has($class_name)) {
54 $i = new ReflectionClass($class_name);
55
56 self::$services[$class_name] = $i->newInstanceArgs($arguments);
57 }
58
59 return self::$services[$class_name];
60 }
61
62 private function has(string $class_name): bool
63 {
64 return isset(self::$services[$class_name]);
65 }
66}
trait SingletonTrait
Class SingletonTrait.
@noinspection PhpIncompatibleReturnTypeInspection
has(string $class_name)
getWithArgument(string $class_name, $argument)
getWithMultipleArguments(string $class_name, array $arguments)