X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDI.php;h=430db847700642f640a1d3ea8d8de3cf0ec275bc;hb=b53f2f29339c6b839af30695c68f774de2f888c7;hp=efd29f9c0c0dc5356ef3c57844cfc643e62fd727;hpb=388b963714895b6aee59648084fe4a66a0964efc;p=friendica.git diff --git a/src/DI.php b/src/DI.php index efd29f9c0c..430db84770 100644 --- a/src/DI.php +++ b/src/DI.php @@ -3,56 +3,14 @@ namespace Friendica; use Dice\Dice; -use Friendica\Core\Cache\ICache; -use Friendica\Core\Config\Configuration; -use Friendica\Core\Config\PConfiguration; -use Friendica\Core\L10n\L10n; -use Friendica\Core\Lock\ILock; -use Friendica\Core\Session\ISession; -use Friendica\Database\Database; -use Friendica\Model\Notify; -use Friendica\Protocol\Activity; -use Friendica\Util\ACLFormatter; -use Friendica\Content\Item as ContentItem; -use Friendica\Content\Text\BBCode\Video as BBCodeVideo; -use Friendica\Util\DateTimeFormat; -use Friendica\Util\FileSystem; -use Friendica\Util\Logger\WorkerLogger; use Psr\Log\LoggerInterface; /** * This class is capable of getting all dynamic created classes * - * There has to be a "method" phpDoc for each new class, containing result class for a proper matching - * - * @method static App app() - * @method static ACLFormatter aclFormatter() - * @method static Notify notify() - * @method static Activity activity() - * @method static ContentItem contentItem() - * @method static BBCodeVideo bbCodeVideo() - * @method static DateTimeFormat dtFormat() - * @method static ICache cache() - * @method static Configuration config() - * @method static PConfiguration pConfig() - * @method static ILock lock() - * @method static L10n l10n() - * @method static LoggerInterface logger() - * @method static LoggerInterface devLogger() - * @method static LoggerInterface workerLogger() - * @method static ISession session() - * @method static App\Authentication auth() - * @method static App\Arguments args() - * @method static App\BaseURL baseUrl() - * @method static App\Mode mode() - * @method static App\Module module() - * @method static App\Page page() - * @method static App\Router router() - * @method static Database dba() - * @method static FileSystem fs() - * + * @see https://designpatternsphp.readthedocs.io/en/latest/Structural/Registry/README.html */ -class DI +abstract class DI { /** @var Dice */ private static $dice; @@ -62,61 +20,379 @@ class DI self::$dice = $dice; } - public static function __callStatic($name, $arguments) - { - switch ($name) { - case 'app': - return self::$dice->create(App::class, $arguments); - case 'aclFormatter': - return self::$dice->create(ACLFormatter::class, $arguments); - case 'auth': - return self::$dice->create(App\Authentication::class, $arguments); - case 'args': - return self::$dice->create(App\Arguments::class, $arguments); - case 'baseUrl': - return self::$dice->create(App\BaseURL::class, $arguments); - case 'mode': - return self::$dice->create(App\Mode::class, $arguments); - case 'module': - return self::$dice->create(App\Module::class, $arguments); - case 'page': - return self::$dice->create(App\Page::class, $arguments); - case 'router': - return self::$dice->create(App\Router::class, $arguments); - case 'notify': - return self::$dice->create(Notify::class, $arguments); - case 'activity': - return self::$dice->create(Activity::class, $arguments); - case 'contentItem': - return self::$dice->create(ContentItem::class, $arguments); - case 'bbCodeVideo': - return self::$dice->create(BBCodeVideo::class, $arguments); - case 'dtFormat': - return self::$dice->create(DateTimeFormat::class, $arguments); - case 'cache': - return self::$dice->create(ICache::class, $arguments); - case 'config': - return self::$dice->create(Configuration::class, $arguments); - case 'pConfig': - return self::$dice->create(PConfiguration::class, $arguments); - case 'lock': - return self::$dice->create(ILock::class, $arguments); - case 'l10n': - return self::$dice->create(L10n::class, $arguments); - case 'logger': - return self::$dice->create(LoggerInterface::class, $arguments); - case 'devLogger': - return self::$dice->create('$devLogger', $arguments); - case 'workerLogger': - return self::$dice->create(WorkerLogger::class, $arguments); - case 'session': - return self::$dice->create(ISession::class, $arguments); - case 'dba': - return self::$dice->create(Database::class, $arguments); - case 'fs': - return self::$dice->create(FileSystem::class, $arguments); - default: - return null; - } + // + // common instances + // + + /** + * @return App + */ + public static function app() + { + return self::$dice->create(App::class); + } + + /** + * @return Database\Database + */ + public static function dba() + { + return self::$dice->create(Database\Database::class); + } + + // + // "App" namespace instances + // + + /** + * @return App\Authentication + */ + public static function auth() + { + return self::$dice->create(App\Authentication::class); + } + + /** + * @return App\Arguments + */ + public static function args() + { + return self::$dice->create(App\Arguments::class); + } + + /** + * @return App\BaseURL + */ + public static function baseUrl() + { + return self::$dice->create(App\BaseURL::class); + } + + /** + * @return App\Mode + */ + public static function mode() + { + return self::$dice->create(App\Mode::class); + } + + /** + * @return App\Module + */ + public static function module() + { + return self::$dice->create(App\Module::class); + } + + /** + * @return App\Page + */ + public static function page() + { + return self::$dice->create(App\Page::class); + } + + /** + * @return App\Router + */ + public static function router() + { + return self::$dice->create(App\Router::class); + } + + // + // "Content" namespace instances + // + + /** + * @return Content\Item + */ + public static function contentItem() + { + return self::$dice->create(Content\Item::class); + } + + /** + * @return Content\Text\BBCode\Video + */ + public static function bbCodeVideo() + { + return self::$dice->create(Content\Text\BBCode\Video::class); + } + + // + // "Core" namespace instances + // + + /** + * @return Core\Cache\ICache + */ + public static function cache() + { + return self::$dice->create(Core\Cache\ICache::class); + } + + /** + * @return Core\Config\IConfig + */ + public static function config() + { + return self::$dice->create(Core\Config\IConfig::class); + } + + /** + * @return Core\PConfig\IPConfig + */ + public static function pConfig() + { + return self::$dice->create(Core\PConfig\IPConfig::class); + } + + /** + * @return Core\Lock\ILock + */ + public static function lock() + { + return self::$dice->create(Core\Lock\ILock::class); + } + + /** + * @return Core\L10n + */ + public static function l10n() + { + return self::$dice->create(Core\L10n::class); + } + + /** + * @return Core\Process + */ + public static function process() + { + return self::$dice->create(Core\Process::class); + } + + /** + * @return Core\Session\ISession + */ + public static function session() + { + return self::$dice->create(Core\Session\ISession::class); + } + + /** + * @return Core\StorageManager + */ + public static function storageManager() + { + return self::$dice->create(Core\StorageManager::class); + } + + // + // "LoggerInterface" instances + // + + /** + * @return LoggerInterface + */ + public static function logger() + { + return self::$dice->create(LoggerInterface::class); + } + + /** + * @return LoggerInterface + */ + public static function devLogger() + { + return self::$dice->create('$devLogger'); + } + + /** + * @return LoggerInterface + */ + public static function workerLogger() + { + return self::$dice->create(Util\Logger\WorkerLogger::class); + } + + // + // "Factory" namespace instances + // + + /** + * @return Factory\Api\Mastodon\Account + */ + public static function mstdnAccount() + { + return self::$dice->create(Factory\Api\Mastodon\Account::class); + } + + /** + * @return Factory\Api\Mastodon\Emoji + */ + public static function mstdnEmoji() + { + return self::$dice->create(Factory\Api\Mastodon\Emoji::class); + } + + /** + * @return Factory\Api\Mastodon\Field + */ + public static function mstdnField() + { + return self::$dice->create(Factory\Api\Mastodon\Field::class); + } + + /** + * @return Factory\Api\Mastodon\FollowRequest + */ + public static function mstdnFollowRequest() + { + return self::$dice->create(Factory\Api\Mastodon\FollowRequest::class); + } + + /** + * @return Factory\Api\Mastodon\Relationship + */ + public static function mstdnRelationship() + { + return self::$dice->create(Factory\Api\Mastodon\Relationship::class); + } + + /** + * @return Factory\Notification\Notification + */ + public static function notification() + { + return self::$dice->create(Factory\Notification\Notification::class); + } + + /** + * @return Factory\Notification\Introduction + */ + public static function notificationIntro() + { + return self::$dice->create(Factory\Notification\Introduction::class); + } + + // + // "Model" namespace instances + // + + /** + * @return Model\User\Cookie + */ + public static function cookie() + { + return self::$dice->create(Model\User\Cookie::class); + } + + /** + * @return Model\Storage\IStorage + */ + public static function storage() + { + return self::$dice->create(Model\Storage\IStorage::class); + } + + // + // "Repository" namespace + // + + /** + * @return Repository\FSuggest; + */ + public static function fsuggest() + { + return self::$dice->create(Repository\FSuggest::class); + } + + /** + * @return Repository\Introduction + */ + public static function intro() + { + return self::$dice->create(Repository\Introduction::class); + } + + /** + * @return Repository\PermissionSet + */ + public static function permissionSet() + { + return self::$dice->create(Repository\PermissionSet::class); + } + + /** + * @return Repository\ProfileField + */ + public static function profileField() + { + return self::$dice->create(Repository\ProfileField::class); + } + + /** + * @return Repository\Notify + */ + public static function notify() + { + return self::$dice->create(Repository\Notify::class); + } + + // + // "Protocol" namespace instances + // + + /** + * @return Protocol\Activity + */ + public static function activity() + { + return self::$dice->create(Protocol\Activity::class); + } + + // + // "Util" namespace instances + // + + /** + * @return Util\ACLFormatter + */ + public static function aclFormatter() + { + return self::$dice->create(Util\ACLFormatter::class); + } + + /** + * @return Util\DateTimeFormat + */ + public static function dtFormat() + { + return self::$dice->create(Util\DateTimeFormat::class); + } + + /** + * @return Util\FileSystem + */ + public static function fs() + { + return self::$dice->create(Util\FileSystem::class); + } + + /** + * @return Util\Profiler + */ + public static function profiler() + { + return self::$dice->create(Util\Profiler::class); + } + + /** + * @return Util\Emailer + */ + public static function emailer() + { + return self::$dice->create(Util\Emailer::class); } }