X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDI.php;h=cc765fa529c1ec6c1a2f4c4974de013e957cdea6;hb=46cd39fb34613f4b331793f19c0e562f93125066;hp=6fd0e3a7ada89ebd40bdfbf222e4c7887670458b;hpb=24c32cff0dcd38d5aa509208f5f17abb05a8b140;p=friendica.git diff --git a/src/DI.php b/src/DI.php index 6fd0e3a7ad..cc765fa529 100644 --- a/src/DI.php +++ b/src/DI.php @@ -37,9 +37,34 @@ abstract class DI /** @var Dice */ private static $dice; - public static function init(Dice $dice) + /** + * Initialize the singleton DI container with the Dice instance + * + * @param Dice $dice The Dice instance + * @param bool $disableDepByHand If true, the database dependencies aren't set, thus any occurrence of logging or + * profiling in database methods would lead to an error. This flag is for testing only. + * + * @return void + */ + public static function init(Dice $dice, bool $disableDepByHand = false) { self::$dice = $dice; + + if (!$disableDepByHand) { + self::setCompositeRootDependencyByHand(); + } + } + + /** + * I HATE this method, but everything else needs refactoring at the database itself + * Set the database dependencies manually, because of current, circular dependencies between the database and the config table + * + * @todo Instead of this madness, split the database in a core driver-dependent (mysql, mariadb, postgresql, ..) part without any other dependency unlike credentials and in the full-featured, driver-independent database class with all dependencies + */ + public static function setCompositeRootDependencyByHand() + { + $database = static::dba(); + $database->setDependency(static::config(), static::profiler(), static::logger()); } /** @@ -101,10 +126,7 @@ abstract class DI return self::$dice->create(App\Arguments::class); } - /** - * @return App\BaseURL - */ - public static function baseUrl() + public static function baseUrl(): App\BaseURL { return self::$dice->create(App\BaseURL::class); } @@ -357,14 +379,6 @@ abstract class DI return self::$dice->create(Factory\Api\Mastodon\Error::class); } - /** - * @return Factory\Api\Mastodon\FollowRequest - */ - public static function mstdnFollowRequest() - { - return self::$dice->create(Factory\Api\Mastodon\FollowRequest::class); - } - /** * @return Factory\Api\Mastodon\Poll */