]> git.mxchange.org Git - friendica.git/blobdiff - src/DI.php
Revert "Fix redirect logging"
[friendica.git] / src / DI.php
index b7be36212bbbe6ef4c8c2665d3b294f8baf2020d..73f9b7811d37abf5e6f38752e5c2f599ebb4980c 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica;
 
@@ -8,83 +27,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 +39,426 @@ 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\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\Api\Mastodon\Status
+        */
+       public static function mstdnStatus()
+       {
+               return self::$dice->create(Factory\Api\Mastodon\Status::class);
+       }
+
+       /**
+        * @return Factory\Api\Twitter\User
+        */
+       public static function twitterUser()
+       {
+               return self::$dice->create(Factory\Api\Twitter\User::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\Process
+        */
+       public static function modelProcess()
+       {
+               return self::$dice->create(Model\Process::class);
+       }
+
+       /**
+        * @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);
+       }
+
+       //
+       // "Network" namespace
+       //
+
+       /**
+        * @return Network\IHTTPRequest
+        */
+       public static function httpRequest()
+       {
+               return self::$dice->create(Network\IHTTPRequest::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);
+       }
+
+       //
+       // "Security" namespace instances
+       //
+
+       /**
+        * @return \Friendica\Security\Authentication
+        */
+       public static function auth()
+       {
+               return self::$dice->create(Security\Authentication::class);
+       }
+
+       //
+       // "Util" namespace instances
+       //
+
+       /**
+        * @return Util\ACLFormatter
+        */
+       public static function aclFormatter()
+       {
+               return self::$dice->create(Util\ACLFormatter::class);
+       }
+
+       /**
+        * @return string
+        */
+       public static function basePath()
+       {
+               return self::$dice->create('$basepath');
+       }
+
+       /**
+        * @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(self::CLASS_MAPPING[$name], $arguments);
+               return self::$dice->create(Util\Emailer::class);
        }
 }