X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDI.php;h=9ed0c5b24d353f5ed5c1c124c31eae1ebce86cd5;hb=06a18abf5a746232c99b5271d907687b30e72651;hp=09969f29a99bec2ae2d8f1fddd3ebfa1c4e59724;hpb=c1dbb256561ecdb19fe0541628b1ec0f06d95dfa;p=friendica.git diff --git a/src/DI.php b/src/DI.php index 09969f29a9..9ed0c5b24d 100644 --- a/src/DI.php +++ b/src/DI.php @@ -1,92 +1,36 @@ . + * + */ namespace Friendica; use Dice\Dice; -use Friendica\Core\Cache\ICache; -use Friendica\Core\Config\IConfiguration; -use Friendica\Core\Config\IPConfiguration; -use Friendica\Core\L10n\L10n; -use Friendica\Core\Lock\ILock; -use Friendica\Core\Process; -use Friendica\Core\Session\ISession; -use Friendica\Database\Database; -use Friendica\Model\Notify; -use Friendica\Protocol\Activity; -use Friendica\Util\ACLFormatter; -use Friendica\Content; -use Friendica\Util\DateTimeFormat; -use Friendica\Util\FileSystem; -use Friendica\Util\Logger\WorkerLogger; -use Friendica\Util\Profiler; 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 Content\Item contentItem() - * @method static Content\Text\BBCode\Video bbCodeVideo() - * @method static DateTimeFormat dtFormat() - * @method static ICache cache() - * @method static IConfiguration config() - * @method static IPConfiguration pConfig() - * @method static ILock lock() - * @method static L10n l10n() - * @method static LoggerInterface logger() - * @method static LoggerInterface devLogger() - * @method static LoggerInterface workerLogger() - * @method static Profiler profiler() - * @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() - * @method static Process process() - * + * @see https://designpatternsphp.readthedocs.io/en/latest/Structural/Registry/README.html */ -class DI +abstract class DI { - const CLASS_MAPPING = [ - 'app' => App::class, - 'aclFormatter' => ACLFormatter::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, - 'notify' => Notify::class, - 'activity' => Activity::class, - 'contentItem' => Content\Item::class, - 'bbCodeVideo' => Content\Text\BBCode\Video::class, - 'dtFormat' => DateTimeFormat::class, - 'cache' => ICache::class, - 'config' => IConfiguration::class, - 'pConfig' => IPConfiguration::class, - 'l10n' => L10n::class, - 'lock' => ILock::class, - 'logger' => LoggerInterface::class, - 'workerLogger' => WorkerLogger::class, - 'devLogger' => '$devLogger', - 'session' => ISession::class, - 'dba' => Database::class, - 'fs' => FileSystem::class, - 'profiler' => Profiler::class, - 'process' => Process::class, - ]; - /** @var Dice */ private static $dice; @@ -95,8 +39,395 @@ 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\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\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\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 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); } }