<?php namespace Friendica; use Dice\Dice; 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 Database\Database dba() * @method static Model\User\Cookie cookie() * @method static Model\Notify notify() * @method static Model\Introduction intro() * @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() * */ 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, 'dba' => Database\Database::class, 'cookie' => Model\User\Cookie::class, 'notify' => Model\Notify::class, 'intro' => Model\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; public static function init(Dice $dice) { self::$dice = $dice; } public static function __callStatic($name, $arguments) { return self::$dice->create(self::CLASS_MAPPING[$name], $arguments); } }