X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FBaseObject.php;h=20481884517e565123d8b17f7038a6033250525a;hb=fd706cf9a7a0c4700838a1f00b12d8fd37323b7c;hp=39f98a38fde061d34b6ba08c75b74569745cea53;hpb=8f9c0fe14956efbcaf0db9dbfb83222e18e0ab2f;p=friendica.git diff --git a/src/BaseObject.php b/src/BaseObject.php index 39f98a38fd..2048188451 100644 --- a/src/BaseObject.php +++ b/src/BaseObject.php @@ -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.'); + } } }