create(); * * - $a = new ClassA($creationPassedVariable); * */ return [ '$basepath' => [ 'instanceOf' => Util\BasePath::class, 'call' => [ ['getPath', [], Dice::CHAIN_CALL], ], 'constructParams' => [ dirname(__FILE__, 2), $_SERVER ] ], Util\BasePath::class => [ 'shared' => true, 'constructParams' => [ dirname(__FILE__, 2), $_SERVER ] ], Util\ConfigFileLoader::class => [ 'shared' => true, 'constructParams' => [ [Dice::INSTANCE => '$basepath'], ], ], Config\Cache\ConfigCache::class => [ 'instanceOf' => Factory\ConfigFactory::class, 'call' => [ ['createCache', [], Dice::CHAIN_CALL], ], 'shared' => true, ], App\Mode::class => [ 'call' => [ ['determine', [], Dice::CHAIN_CALL], ], // marks the result as shared for other creations, so there's just // one instance for the whole execution 'shared' => true, ], Config\Configuration::class => [ 'shared' => true, 'instanceOf' => Factory\ConfigFactory::class, 'call' => [ ['createConfig', [], Dice::CHAIN_CALL], ], ], Config\PConfiguration::class => [ 'shared' => true, 'instanceOf' => Factory\ConfigFactory::class, 'call' => [ ['createPConfig', [], Dice::CHAIN_CALL], ] ], Database::class => [ 'shared' => true, 'constructParams' => [ [DICE::INSTANCE => \Psr\Log\NullLogger::class], $_SERVER, ], ], /** * Creates the Util\BaseURL * * Same as: * $baseURL = new Util\BaseURL($configuration, $_SERVER); */ Util\BaseURL::class => [ 'shared' => true, 'constructParams' => [ $_SERVER, ], ], /** * Create a Logger, which implements the LoggerInterface * * Same as: * $loggerFactory = new Factory\LoggerFactory(); * $logger = $loggerFactory->create($channel, $configuration, $profiler); * * Attention1: We can use DICE for detecting dependencies inside "chained" calls too * Attention2: The variable "$channel" is passed inside the creation of the dependencies per: * $app = $dice->create(App::class, [], ['$channel' => 'index']); * and is automatically passed as an argument with the same name */ LoggerInterface::class => [ 'shared' => true, 'instanceOf' => Factory\LoggerFactory::class, 'call' => [ ['create', [], Dice::CHAIN_CALL], ], ], '$devLogger' => [ 'shared' => true, 'instanceOf' => Factory\LoggerFactory::class, 'call' => [ ['createDev', [], Dice::CHAIN_CALL], ] ] ];