X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDI.php;h=8d706ed374a1ab3eb80b34280b983dcf0805dfa5;hb=b9bb525fe91c176ada2323c2d628291a27594d59;hp=c2f53e4df9e533d768f93089ebcfa5e7cd2d7906;hpb=38a5358bfa646ae13a4a1a385741890fa88d9b7f;p=friendica.git diff --git a/src/DI.php b/src/DI.php index c2f53e4df9..8d706ed374 100644 --- a/src/DI.php +++ b/src/DI.php @@ -1,6 +1,6 @@ setDependency(static::config(), static::profiler(), static::logger()); + } + + /** + * Returns a clone of the current dice instance + * This useful for overloading the current instance with mocked methods during tests + * + * @return Dice + */ + public static function getDice() + { + return clone self::$dice; } // @@ -54,11 +93,27 @@ abstract class DI /** * @return Database\Database */ - public static function dba() + public static function dba(): Database\Database { return self::$dice->create(Database\Database::class); } + /** + * @return \Friendica\Database\Definition\DbaDefinition + */ + public static function dbaDefinition(): Database\Definition\DbaDefinition + { + return self::$dice->create(Database\Definition\DbaDefinition::class); + } + + /** + * @return \Friendica\Database\Definition\ViewDefinition + */ + public static function viewDefinition(): Database\Definition\ViewDefinition + { + return self::$dice->create(Database\Definition\ViewDefinition::class); + } + // // "App" namespace instances // @@ -71,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); } @@ -87,14 +139,6 @@ abstract class DI return self::$dice->create(App\Mode::class); } - /** - * @return App\Module - */ - public static function module() - { - return self::$dice->create(App\Module::class); - } - /** * @return App\Page */ @@ -123,6 +167,14 @@ abstract class DI return self::$dice->create(Content\Item::class); } + /** + * @return Content\Conversation + */ + public static function conversation() + { + return self::$dice->create(Content\Conversation::class); + } + /** * @return Content\Text\BBCode\Video */ @@ -136,35 +188,45 @@ abstract class DI // /** - * @return Core\Cache\ICache + * @return Core\Cache\Capability\ICanCache */ public static function cache() { - return self::$dice->create(Core\Cache\ICache::class); + return self::$dice->create(Core\Cache\Capability\ICanCache::class); } /** - * @return Core\Config\IConfig + * @return Core\Config\Capability\IManageConfigValues */ public static function config() { - return self::$dice->create(Core\Config\IConfig::class); + return self::$dice->create(Core\Config\Capability\IManageConfigValues::class); + } + + public static function configFileManager(): Core\Config\Util\ConfigFileManager + { + return self::$dice->create(Core\Config\Util\ConfigFileManager::class); + } + + public static function keyValue(): Core\KeyValueStorage\Capabilities\IManageKeyValuePairs + { + return self::$dice->create(Core\KeyValueStorage\Capabilities\IManageKeyValuePairs::class); } /** - * @return Core\PConfig\IPConfig + * @return Core\PConfig\Capability\IManagePersonalConfigValues */ public static function pConfig() { - return self::$dice->create(Core\PConfig\IPConfig::class); + return self::$dice->create(Core\PConfig\Capability\IManagePersonalConfigValues::class); } /** - * @return Core\Lock\ILock + * @return Core\Lock\Capability\ICanLock */ public static function lock() { - return self::$dice->create(Core\Lock\ILock::class); + return self::$dice->create(Core\Lock\Capability\ICanLock::class); } /** @@ -176,33 +238,63 @@ abstract class DI } /** - * @return Core\Process + * @return Core\Worker\Repository\Process */ public static function process() { - return self::$dice->create(Core\Process::class); + return self::$dice->create(Core\Worker\Repository\Process::class); + } + + public static function session(): IHandleSessions + { + return self::$dice->create(Core\Session\Capability\IHandleSessions::class); + } + + public static function userSession(): IHandleUserSessions + { + return self::$dice->create(Core\Session\Capability\IHandleUserSessions::class); } /** - * @return Core\Session\ISession + * @return \Friendica\Core\Storage\Repository\StorageManager */ - public static function session() + public static function storageManager() { - return self::$dice->create(Core\Session\ISession::class); + return self::$dice->create(Core\Storage\Repository\StorageManager::class); } /** - * @return Core\StorageManager + * @return \Friendica\Core\System */ - public static function storageManager() + public static function system() + { + return self::$dice->create(Core\System::class); + } + + /** + * @return \Friendica\Navigation\SystemMessages + */ + public static function sysmsg() { - return self::$dice->create(Core\StorageManager::class); + return self::$dice->create(SystemMessages::class); } // // "LoggerInterface" instances // + /** + * Flushes the Logger instance, so the factory is called again + * (creates a new id and retrieves the current PID) + */ + public static function flushLogger() + { + $flushDice = self::$dice + ->addRule(LoggerInterface::class, self::$dice->getRule(LoggerInterface::class)) + ->addRule('$devLogger', self::$dice->getRule('$devLogger')); + static::init($flushDice); + } + /** * @return LoggerInterface */ @@ -224,7 +316,7 @@ abstract class DI */ public static function workerLogger() { - return self::$dice->create(Util\Logger\WorkerLogger::class); + return self::$dice->create(Core\Logger\Type\WorkerLogger::class); } // @@ -239,6 +331,14 @@ abstract class DI return self::$dice->create(Factory\Api\Mastodon\Account::class); } + /** + * @return Factory\Api\Mastodon\Application + */ + public static function mstdnApplication() + { + return self::$dice->create(Factory\Api\Mastodon\Application::class); + } + /** * @return Factory\Api\Mastodon\Attachment */ @@ -247,6 +347,22 @@ abstract class DI return self::$dice->create(Factory\Api\Mastodon\Attachment::class); } + /** + * @return Factory\Api\Mastodon\Card + */ + public static function mstdnCard() + { + return self::$dice->create(Factory\Api\Mastodon\Card::class); + } + + /** + * @return Factory\Api\Mastodon\Conversation + */ + public static function mstdnConversation() + { + return self::$dice->create(Factory\Api\Mastodon\Conversation::class); + } + /** * @return Factory\Api\Mastodon\Emoji */ @@ -264,19 +380,11 @@ abstract class DI } /** - * @return Factory\Api\Mastodon\Field - */ - public static function mstdnField() - { - return self::$dice->create(Factory\Api\Mastodon\Field::class); - } - - /** - * @return Factory\Api\Mastodon\FollowRequest + * @return Factory\Api\Mastodon\Poll */ - public static function mstdnFollowRequest() + public static function mstdnPoll() { - return self::$dice->create(Factory\Api\Mastodon\FollowRequest::class); + return self::$dice->create(Factory\Api\Mastodon\Poll::class); } /** @@ -296,54 +404,75 @@ abstract class DI } /** - * @return Factory\Api\Mastodon\Mention + * @return Factory\Api\Mastodon\StatusSource */ - public static function mstdnMention() + public static function mstdnStatusSource() { - return self::$dice->create(Factory\Api\Mastodon\Mention::class); + return self::$dice->create(Factory\Api\Mastodon\StatusSource::class); } /** - * @return Factory\Api\Mastodon\Tag + * @return Factory\Api\Mastodon\ScheduledStatus */ - public static function mstdnTag() + public static function mstdnScheduledStatus() { - return self::$dice->create(Factory\Api\Mastodon\Tag::class); + return self::$dice->create(Factory\Api\Mastodon\ScheduledStatus::class); } /** - * @return Factory\Api\Twitter\User + * @return Factory\Api\Mastodon\Subscription */ - public static function twitterUser() + public static function mstdnSubscription() { - return self::$dice->create(Factory\Api\Twitter\User::class); + return self::$dice->create(Factory\Api\Mastodon\Subscription::class); + } + + /** + * @return Factory\Api\Mastodon\ListEntity + */ + public static function mstdnList() + { + return self::$dice->create(Factory\Api\Mastodon\ListEntity::class); + } + + /** + * @return Factory\Api\Mastodon\Notification + */ + public static function mstdnNotification() + { + return self::$dice->create(Factory\Api\Mastodon\Notification::class); } /** - * @return Factory\Notification\Notification + * @return Factory\Api\Twitter\Status */ - public static function notification() + public static function twitterStatus() { - return self::$dice->create(Factory\Notification\Notification::class); + return self::$dice->create(Factory\Api\Twitter\Status::class); } /** - * @return Factory\Notification\Introduction + * @return Factory\Api\Twitter\User */ - public static function notificationIntro() + public static function twitterUser() + { + return self::$dice->create(Factory\Api\Twitter\User::class); + } + + public static function notificationIntro(): Navigation\Notifications\Factory\Introduction { - return self::$dice->create(Factory\Notification\Introduction::class); + return self::$dice->create(Navigation\Notifications\Factory\Introduction::class); } // // "Model" namespace instances // /** - * @return Model\Process + * @return \Friendica\Core\Worker\Repository\Process */ public static function modelProcess() { - return self::$dice->create(Model\Process::class); + return self::$dice->create(Core\Worker\Repository\Process::class); } /** @@ -355,11 +484,28 @@ abstract class DI } /** - * @return Model\Storage\IStorage + * @return Core\Storage\Capability\ICanWriteToStorage */ public static function storage() { - return self::$dice->create(Model\Storage\IStorage::class); + return self::$dice->create(Core\Storage\Capability\ICanWriteToStorage::class); + } + + /** + * @return Model\Log\ParsedLogIterator + */ + public static function parsedLogIterator() + { + return self::$dice->create(Model\Log\ParsedLogIterator::class); + } + + // + // "Module" namespace + // + + public static function apiResponse(): Module\Api\ApiResponse + { + return self::$dice->create(Module\Api\ApiResponse::class); } // @@ -367,11 +513,11 @@ abstract class DI // /** - * @return Network\IHTTPRequest + * @return Network\HTTPClient\Capability\ICanSendHttpRequests */ - public static function httpRequest() + public static function httpClient() { - return self::$dice->create(Network\IHTTPRequest::class); + return self::$dice->create(Network\HTTPClient\Capability\ICanSendHttpRequests::class); } // @@ -379,43 +525,114 @@ abstract class DI // /** - * @return Repository\FSuggest; + * @return Contact\FriendSuggest\Repository\FriendSuggest; */ public static function fsuggest() { - return self::$dice->create(Repository\FSuggest::class); + return self::$dice->create(Contact\FriendSuggest\Repository\FriendSuggest::class); } /** - * @return Repository\Introduction + * @return Contact\FriendSuggest\Factory\FriendSuggest; */ - public static function intro() + public static function fsuggestFactory() { - return self::$dice->create(Repository\Introduction::class); + return self::$dice->create(Contact\FriendSuggest\Factory\FriendSuggest::class); } /** - * @return Repository\PermissionSet + * @return Contact\Introduction\Repository\Introduction */ - public static function permissionSet() + public static function intro() { - return self::$dice->create(Repository\PermissionSet::class); + return self::$dice->create(Contact\Introduction\Repository\Introduction::class); } /** - * @return Repository\ProfileField + * @return Contact\Introduction\Factory\Introduction */ - public static function profileField() + public static function introFactory() { - return self::$dice->create(Repository\ProfileField::class); + return self::$dice->create(Contact\Introduction\Factory\Introduction::class); } - /** - * @return Repository\Notification - */ - public static function notify() + public static function report(): Moderation\Repository\Report + { + return self::$dice->create(Moderation\Repository\Report::class); + } + + public static function reportFactory(): Moderation\Factory\Report + { + return self::$dice->create(Moderation\Factory\Report::class); + } + + public static function localRelationship(): Contact\LocalRelationship\Repository\LocalRelationship + { + return self::$dice->create(Contact\LocalRelationship\Repository\LocalRelationship::class); + } + + public static function permissionSet(): Security\PermissionSet\Repository\PermissionSet + { + return self::$dice->create(Security\PermissionSet\Repository\PermissionSet::class); + } + + public static function permissionSetFactory(): Security\PermissionSet\Factory\PermissionSet + { + return self::$dice->create(Security\PermissionSet\Factory\PermissionSet::class); + } + + public static function profileField(): Profile\ProfileField\Repository\ProfileField + { + return self::$dice->create(Profile\ProfileField\Repository\ProfileField::class); + } + + public static function profileFieldFactory(): Profile\ProfileField\Factory\ProfileField + { + return self::$dice->create(Profile\ProfileField\Factory\ProfileField::class); + } + + public static function notification(): Navigation\Notifications\Repository\Notification + { + return self::$dice->create(Navigation\Notifications\Repository\Notification::class); + } + + public static function notificationFactory(): Navigation\Notifications\Factory\Notification + { + return self::$dice->create(Navigation\Notifications\Factory\Notification::class); + } + + public static function notify(): Navigation\Notifications\Repository\Notify + { + return self::$dice->create(Navigation\Notifications\Repository\Notify::class); + } + + public static function notifyFactory(): Navigation\Notifications\Factory\Notify + { + return self::$dice->create(Navigation\Notifications\Factory\Notify::class); + } + + public static function formattedNotificationFactory(): Navigation\Notifications\Factory\FormattedNotify + { + return self::$dice->create(Navigation\Notifications\Factory\FormattedNotify::class); + } + + public static function formattedNavNotificationFactory(): Navigation\Notifications\Factory\FormattedNavNotification + { + return self::$dice->create(Navigation\Notifications\Factory\FormattedNavNotification::class); + } + + // + // "Federation" namespace instances + // + + public static function deliveryQueueItemFactory(): Federation\Factory\DeliveryQueueItem + { + return self::$dice->create(Federation\Factory\DeliveryQueueItem::class); + } + + public static function deliveryQueueItemRepo(): Federation\Repository\DeliveryQueueItem { - return self::$dice->create(Repository\Notification::class); + return self::$dice->create(Federation\Repository\DeliveryQueueItem::class); } // @@ -430,6 +647,11 @@ abstract class DI return self::$dice->create(Protocol\Activity::class); } + public static function dsprContact(): Protocol\Diaspora\Repository\DiasporaContact + { + return self::$dice->create(Protocol\Diaspora\Repository\DiasporaContact::class); + } + // // "Security" namespace instances //