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