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