ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
SingletonTrait.php
Go to the documentation of this file.
1 <?php namespace ILIAS\GlobalScreen;
2 
8 trait SingletonTrait
9 {
10 
14  private static $services = [];
15 
16 
22  private function get(string $class_name)
23  {
24  if (!$this->has($class_name)) {
25  self::$services[$class_name] = new $class_name();
26  }
27 
28  return self::$services[$class_name];
29  }
30 
31 
37  private function getWithArgument(string $class_name, $argument)
38  {
39  if (!$this->has($class_name)) {
40  self::$services[$class_name] = new $class_name($argument);
41  }
42 
43  return self::$services[$class_name];
44  }
45 
46 
54  private function getWithMultipleArguments(string $class_name, array $arguments)
55  {
56  if (!$this->has($class_name)) {
57  $i = new \ReflectionClass($class_name);
58 
59  self::$services[$class_name] = $i->newInstanceArgs($arguments);
60  }
61 
62  return self::$services[$class_name];
63  }
64 
65 
71  private function has(string $class_name) : bool
72  {
73  return isset(self::$services[$class_name]);
74  }
75 }
getWithMultipleArguments(string $class_name, array $arguments)
has(string $class_name)
getWithArgument(string $class_name, $argument)
$i
Definition: metadata.php:24