ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
SingletonTrait.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 namespace ILIAS\GlobalScreen;
21 
22 use ReflectionClass;
23 
28 trait SingletonTrait
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 }
getWithMultipleArguments(string $class_name, array $arguments)
PhpIncompatibleReturnTypeInspection
has(string $class_name)
getWithArgument(string $class_name, $argument)
$i
Definition: metadata.php:24