]> git.mxchange.org Git - friendica.git/commitdiff
Refactor DI annotations to static methods
authornupplaPhil <admin@philipp.info>
Sat, 18 Jan 2020 10:28:29 +0000 (11:28 +0100)
committernupplaPhil <admin@philipp.info>
Sat, 18 Jan 2020 10:28:29 +0000 (11:28 +0100)
src/DI.php

index b7be36212bbbe6ef4c8c2665d3b294f8baf2020d..38d000423f340c7d597f5a7166c1a0c40d0a078d 100644 (file)
@@ -8,83 +8,10 @@ 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 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 Content\Item contentItem()
- * @method static Content\Text\BBCode\Video bbCodeVideo()
- * @method static Core\Cache\ICache cache()
- * @method static Core\Config\IConfiguration config()
- * @method static Core\Config\IPConfiguration pConfig()
- * @method static Core\Lock\ILock lock()
- * @method static Core\L10n\L10n l10n()
- * @method static Core\Process process()
- * @method static Core\Session\ISession session()
- * @method static Core\StorageManager storageManager()
- * @method static Database\Database dba()
- * @method static Factory\Mastodon\Account mstdnAccount()
- * @method static Factory\Mastodon\FollowRequest mstdnFollowRequest()
- * @method static Factory\Mastodon\Relationship mstdnRelationship()
- * @method static Model\User\Cookie cookie()
- * @method static Model\Notify notify()
- * @method static Repository\Introduction intro()
- * @method static Model\Storage\IStorage storage()
- * @method static Protocol\Activity activity()
- * @method static Util\ACLFormatter aclFormatter()
- * @method static Util\DateTimeFormat dtFormat()
- * @method static Util\FileSystem fs()
- * @method static Util\Profiler profiler()
- * @method static LoggerInterface logger()
- * @method static LoggerInterface devLogger()
- * @method static LoggerInterface workerLogger()
- *
+ * @see https://designpatternsphp.readthedocs.io/en/latest/Structural/Registry/README.html
  */
 abstract class DI
 {
-       const CLASS_MAPPING = [
-               'app'                => App::class,
-               'auth'               => App\Authentication::class,
-               'args'               => App\Arguments::class,
-               'baseUrl'            => App\BaseURL::class,
-               'mode'               => App\Mode::class,
-               'module'             => App\Module::class,
-               'page'               => App\Page::class,
-               'router'             => App\Router::class,
-               'contentItem'        => Content\Item::class,
-               'bbCodeVideo'        => Content\Text\BBCode\Video::class,
-               'cache'              => Core\Cache\ICache::class,
-               'config'             => Core\Config\IConfiguration::class,
-               'pConfig'            => Core\Config\IPConfiguration::class,
-               'l10n'               => Core\L10n\L10n::class,
-               'lock'               => Core\Lock\ILock::class,
-               'process'            => Core\Process::class,
-               'session'            => Core\Session\ISession::class,
-               'storageManager'     => Core\StorageManager::class,
-               'dba'                => Database\Database::class,
-               'mstdnAccount'       => Factory\Mastodon\Account::class,
-               'mstdnFollowRequest' => Factory\Mastodon\FollowRequest::class,
-               'mstdnRelationship'  => Factory\Mastodon\Relationship::class,
-               'cookie'             => Model\User\Cookie::class,
-               'notify'             => Model\Notify::class,
-               'storage'            => Model\Storage\IStorage::class,
-               'intro'              => Repository\Introduction::class,
-               'activity'           => Protocol\Activity::class,
-               'aclFormatter'       => Util\ACLFormatter::class,
-               'dtFormat'           => Util\DateTimeFormat::class,
-               'fs'                 => Util\FileSystem::class,
-               'workerLogger'       => Util\Logger\WorkerLogger::class,
-               'profiler'           => Util\Profiler::class,
-               'logger'             => LoggerInterface::class,
-               'devLogger'          => '$devLogger',
-       ];
-
        /** @var Dice */
        private static $dice;
 
@@ -93,8 +20,312 @@ abstract class DI
                self::$dice = $dice;
        }
 
-       public static function __callStatic($name, $arguments)
+       //
+       // 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\IConfiguration
+        */
+       public static function config()
+       {
+               return self::$dice->create(Core\Config\IConfiguration::class);
+       }
+
+       /**
+        * @return Core\Config\IPConfiguration
+        */
+       public static function pConfig()
+       {
+               return self::$dice->create(Core\Config\IPConfiguration::class);
+       }
+
+       /**
+        * @return Core\Lock\ILock
+        */
+       public static function lock()
+       {
+               return self::$dice->create(Core\Lock\ILock::class);
+       }
+
+       public static function l10n()
+       {
+               return self::$dice->create(Core\L10n\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\Mastodon\Account
+        */
+       public static function mstdnAccount()
+       {
+               return self::$dice->create(Factory\Mastodon\Account::class);
+       }
+
+       /**
+        * @return Factory\Mastodon\FollowRequest
+        */
+       public static function mstdnFollowRequest()
+       {
+               return self::$dice->create(Factory\Mastodon\FollowRequest::class);
+       }
+
+       /**
+        * @return Factory\Mastodon\Relationship
+        */
+       public static function mstdnRelationship()
+       {
+               return self::$dice->create(Factory\Mastodon\Relationship::class);
+       }
+
+       //
+       // "Model" namespace instances
+       //
+
+       /**
+        * @return Model\User\Cookie
+        */
+       public static function cookie()
+       {
+               return self::$dice->create(Model\User\Cookie::class);
+       }
+
+       /**
+        * @return Model\Notify
+        */
+       public static function notify()
+       {
+               return self::$dice->create(Model\Notify::class);
+       }
+
+       /**
+        * @return Model\Storage\IStorage
+        */
+       public static function storage()
+       {
+               return self::$dice->create(Model\Storage\IStorage::class);
+       }
+
+       //
+       // "Repository" namespace
+       //
+
+       /**
+        * @return Repository\Introduction
+        */
+       public static function intro()
+       {
+               return self::$dice->create(Repository\Introduction::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(self::CLASS_MAPPING[$name], $arguments);
+               return self::$dice->create(Util\Profiler::class);
        }
 }