]> git.mxchange.org Git - friendica.git/blobdiff - src/BaseObject.php
Group selection: Respect "pubmail" and ignore atchived or blocked contacts
[friendica.git] / src / BaseObject.php
index 39f98a38fde061d34b6ba08c75b74569745cea53..20481884517e565123d8b17f7038a6033250525a 100644 (file)
@@ -4,18 +4,34 @@
  */
 namespace Friendica;
 
-require_once 'boot.php';
+require_once __DIR__ . '/../boot.php';
 
-use Friendica\Util\LoggerFactory;
+use Dice\Dice;
+use Friendica\Network\HTTPException\InternalServerErrorException;
 
 /**
  * Basic object
  *
  * Contains what is useful to any object
+ *
+ * Act's like a global registry for classes
  */
 class BaseObject
 {
-       private static $app = null;
+       /**
+        * @var Dice The Dependency Injection library
+        */
+       private static $dice;
+
+       /**
+        * Set's the dependency injection library for a global usage
+        *
+        * @param Dice $dice The dependency injection library
+        */
+       public static function setDependencyInjection(Dice $dice)
+       {
+               self::$dice = $dice;
+       }
 
        /**
         * Get the app
@@ -26,23 +42,28 @@ class BaseObject
         */
        public static function getApp()
        {
-               if (empty(self::$app)) {
-                       $logger = $logger = LoggerFactory::create('app');
-                       self::$app = new App(dirname(__DIR__), $logger);
-               }
-
-               return self::$app;
+               return self::getClass(App::class);
        }
 
        /**
-        * Set the app
+        * Returns the initialized class based on it's name
+        *
+        * @param string $name The name of the class
         *
-        * @param App $app App
+        * @return object The initialized name
         *
-        * @return void
+        * @throws InternalServerErrorException
         */
-       public static function setApp(App $app)
+       public static function getClass(string $name)
        {
-               self::$app = $app;
+               if (empty(self::$dice)) {
+                       throw new InternalServerErrorException('DICE isn\'t initialized.');
+               }
+
+               if (class_exists($name) || interface_exists($name)) {
+                       return self::$dice->create($name);
+               } else {
+                       throw new InternalServerErrorException('Class \'' . $name . '\' isn\'t valid.');
+               }
        }
 }