/** * @return a new DI container with prefilled values for the news app */ function createDIContainer() { $container = new \Pimple(); /** * BASE */ $container['API'] = $container->share(function ($c) { return new API('apptemplate_advanced'); }); $container['Security'] = $container->share(function ($c) { return new Security($c['API']->getAppName()); }); $container['Request'] = $container->share(function ($c) { return new Request($_GET, $_POST, $_FILES); }); /** * CONTROLLERS */ $container['ItemController'] = function ($c) { return new ItemController($c['API'], $c['Request'], $c['ItemMapper']); }; $container['SettingsController'] = function ($c) { return new SettingsController($c['API'], $c['Request']); }; /** * MAPPERS */ $container['ItemMapper'] = $container->share(function ($c) { return new ItemMapper($c['API']); }); return $container; }
/** * @return a new DI container with prefilled values for the news app */ function createDIContainer() { $container = new \Pimple(); /** * BASE */ $container['API'] = $container->share(function ($c) { return new API('apptemplate'); }); $container['Security'] = $container->share(function ($c) { return new Security($c['API']->getAppName()); }); $container['Request'] = $container->share(function ($c) { return new Request($c['API']->getUserId(), $_GET, $_POST); }); /** * CONTROLLERS */ $container['IndexController'] = function ($c) { return new IndexController($c['API'], $c['Request']); }; $container['SettingsController'] = function ($c) { return new SettingsController($c['API'], $c['Request']); }; $container['AjaxController'] = function ($c) { return new AjaxController($c['API'], $c['Request']); }; return $container; }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Pimple $mainContainer An Container instance */ public function register(\Pimple $mainContainer) { $mainContainer['core']['db'] = $mainContainer->share(function () { return \Pelican_Db::getInstance(); }); $mainContainer['core']['listener.ajax_response_render'] = $mainContainer->share(function () { return new AjaxRenderResponseListener(new \Pelican_Ajax_Adapter_Jquery()); }); }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Pimple $mainContainer An Container instance */ public function register(\Pimple $mainContainer) { $container = new \Pimple(); $container['profiler'] = $mainContainer->share(function ($container) use($mainContainer) { $profiler = new Profiler(new FileStorage($mainContainer['config']->get('profiler_path'))); $profiler->addCollector($container['collector.cache']); $profiler->addCollector($container['collector.database']); return $profiler; }); $container['session_storage'] = $mainContainer->share(function () use($mainContainer) { return new SessionStorage($mainContainer['session']); }); $container['profiler_manager'] = $mainContainer->share(function ($container) { return new ProfilerManager($container['profiler']); }); $container['collector.cache'] = $mainContainer->share(function () { return new CacheDataCollector(); }); $container['collector.listener'] = $mainContainer->share(function () use($mainContainer) { return new ListenerDataCollector($mainContainer['core']['dispatcher']); }); $container['collector.database'] = $mainContainer->share(function () { return new DatabaseDataCollector(); }); $container['collector.xhprof'] = $mainContainer->share(function () { return new XhprofDataCollector(); }); $container['listener'] = $mainContainer->share(function ($container) { return new ProfilerListener($container['profiler']); }); $container['template_finder'] = $mainContainer->share(function () { return new Finder(); }); $mainContainer['profiler'] = $container; }
public function register(\Pimple $pimple) { $pimple['db.connection'] = $pimple->share(function () { $databaseConnector = new DatabaseConnectorService(); return $databaseConnector->getConnection(); }); $pimple['repository'] = $pimple->share(function () { return new RepositoryService(); }); $pimple['api.auth'] = $pimple->share(function ($pimple) { $basicAuthenticationService = new BasicAuthenticationService(); $basicAuthenticationService->setPasswordService($pimple['password']); return $basicAuthenticationService; }); $pimple['password'] = $pimple->share(function () { return new PasswordService(); }); $pimple['dispatcher'] = $pimple->share(function () { return new EventDispatcher(); }); $pimple['logger'] = $pimple->share(function () { $logger = new Logger('ubirimi.activity'); $IntrospectionProcessor = new IntrospectionProcessor(); $webProcessor = new WebProcessor(); $logger->pushHandler(new StreamHandler(UbirimiContainer::get()['log.path'], Logger::DEBUG)); $logger->pushHandler(new \DbMonologHandler(), Logger::DEBUG); $logger->pushProcessor($IntrospectionProcessor); $logger->pushProcessor($webProcessor); return $logger; }); $pimple['email'] = $pimple->share(function ($pimple) { return new EmailService($pimple['session']); }); $pimple['client'] = $pimple->share(function ($pimple) { return new ClientService(); }); $pimple['user'] = $pimple->share(function ($pimple) { return new UserService($pimple['session']); }); $pimple['login.time'] = $pimple->share(function ($pimple) { return new LoginTimeService(); }); $pimple['session'] = $pimple->share(function () { $lastDot = strrpos($_SERVER['SERVER_NAME'], '.'); $secondToLastDot = strrpos($_SERVER['SERVER_NAME'], '.', $lastDot - strlen($_SERVER['SERVER_NAME']) - 1); $storage = new NativeSessionStorage(array('cookie_domain' => substr($_SERVER['SERVER_NAME'], $secondToLastDot)), new NativeFileSessionHandler()); return new Session($storage, new NamespacedAttributeBag(), new AutoExpireFlashBag()); }); $pimple['warmup'] = $pimple->share(function ($pimple) { return new WarmUpService($pimple['session']); }); $pimple['savant'] = $pimple->share(function () { return new \Savant3(array('template_path' => array(__DIR__ . '/../Yongo/Resources/views/email/', __DIR__ . '/../GeneralSettings/Resources/views/email/', __DIR__ . '/../Calendar/Resources/views/email/', __DIR__ . '/../SvnHosting/Resources/views/email/', __DIR__ . '/../Resources/views/email'))); }); }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Pimple $container An Container instance */ public function register(\Pimple $container) { $services = new \Pimple(); $services['factory'] = $container->share(function () use($container) { return new \Itkg\Core\Cache\Factory($container['cache']['adapters']); }); $services['listener'] = $container->share(function () use($services, $container) { return new CacheListener($services['factory']->create($container['config']['cache']['adapter'], $container['config']['cache']), $container['core']['dispatcher']); }); $container['cache'] = $services; }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Pimple $mainContainer An Container instance */ public function register(\Pimple $mainContainer) { $mainContainer['router'] = $mainContainer->share(function () { return new Router(); }); $mainContainer['request_matcher'] = $mainContainer->share(function ($mainContainer) { return new RequestMatcher($mainContainer['router']); }); // listeners $mainContainer['listener.request_matcher'] = $mainContainer->share(function ($mainContainer) { return new RequestMatcherListener($mainContainer['request_matcher']); }); $mainContainer['dispatcher']->addSubscriber($mainContainer['listener.request_matcher']); }
public function register(\Pimple $pimple) { $pimple['issue'] = $pimple->share(function ($pimple) { return new IssueService($pimple['session']); }); $pimple['issue.email'] = $pimple->share(function ($pimple) { return new IssueEmailService($pimple['session'], $pimple['workflow']); }); $pimple['workflow'] = $pimple->share(function ($pimple) { return new WorkflowService($pimple['session']); }); $pimple['project'] = $pimple->share(function ($pimple) { return new ProjectService($pimple['session']); }); }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Pimple $mainContainer An Container instance */ public function register(\Pimple $mainContainer) { $mainContainer['listener.response_exception'] = $mainContainer->share(function () { return new ResponseExceptionListener(); }); $mainContainer['listener.processor_response_render'] = $mainContainer->share(function () { return new ResponsePostRendererListener(); }); // Response Processors $mainContainer['response.processor.compress'] = $mainContainer->share(function () { return new CompressProcessor(); }); $dispatcher = $mainContainer['dispatcher']; $dispatcher->addSubscriber($mainContainer['listener.response_exception']); $dispatcher->addSubscriber($mainContainer['listener.processor_response_render']); }
public function register(\Pimple $container) { $container['logger'] = function () use($container) { return $container['monolog']; }; if ($bridge = class_exists('Symfony\\Bridge\\Monolog\\Logger')) { $container['monolog.handler.debug'] = function () use($container) { return new DebugHandler($container['monolog.level']); }; } $container['monolog.logger.class'] = $bridge ? 'Symfony\\Bridge\\Monolog\\Logger' : 'Monolog\\Logger'; $container['monolog'] = $container->share(function ($container) { $log = new $container['monolog.logger.class']($container['monolog.name']); $log->pushHandler($container['monolog.handler']); if ($container['debug'] && isset($container['monolog.handler.debug'])) { $log->pushHandler($container['monolog.handler.debug']); } return $log; }); $container['monolog.handler'] = function () use($container) { return new StreamHandler($container['monolog.logfile'], $container['monolog.level']); }; $container['monolog.level'] = function () { return Logger::DEBUG; }; $container['monolog.name'] = 'container'; }
public function register(Application $app) { $app['mongodbs.options.initializer'] = $app->protect(function () use($app) { static $initialized = false; if ($initialized) { return; } $initialized = true; if (!isset($app['mongodbs.options'])) { $app['mongodbs.options'] = ['default' => isset($app['mongodb.options']) ? $app['mongodb.options'] : []]; } $app['mongodbs.options'] = array_map(function ($options) use($app) { return array_replace($app['mongodb.default_options'], $options); }, $app['mongodbs.options']); if (!isset($app['mongodbs.default'])) { $app['mongodbs.default'] = array_keys(array_slice($app['mongodbs.options'], 0, 1))[0]; } }); $app['mongodbs'] = $app->share(function (Application $app) { $app['mongodbs.options.initializer'](); $container = new \Pimple(); foreach ($app['mongodbs.options'] as $name => $options) { $container[$name] = $container->share(function () use($options) { return new Manager($options['uri'], $options['options'], $options['driverOptions']); }); } return $container; }); $app['mongodb.default_options'] = ['uri' => 'mongodb://localhost:27017', 'options' => [], 'driverOptions' => []]; // shortcuts for the "first" MongoDB $app['mongodb'] = $app->share(function (Application $app) { $dbs = $app['mongodbs']; return $dbs[$app['mongodbs.default']]; }); }
public function set($closure) { if ($closure instanceof \Closure) { if ($this->protect) { $closure = $this->pimple->protect($closure); } if (!empty($this->inject)) { $factories = array(); foreach ($this->inject as $id) { $factory = $this->pimple->raw($id); if (!$factory instanceof \Closure) { throw new \InvalidArgumentException(sprintf('Identifier "%s" does not contain an object definition.', $id)); } $factories[] = $factory; } $closure = function ($c) use($closure, $factories) { $params = array_map(function ($factory) use($c) { return $factory($c); }, $factories); $params[] = $c; return call_user_func_array($closure, $params); }; } if ($this->share) { $closure = $this->pimple->share($closure); } } $this->pimple[$this->key] = $closure; $this->restore(); }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Pimple $mainContainer */ public function register(\Pimple $mainContainer) { $container = new \Pimple(); $container['deserializer_listener'] = $mainContainer->share(function () { return new DeserializerListener(SerializerBuilder::create()->build()); }); $container['logger_listener'] = $mainContainer->share(function () { return new LoggerListener(); }); $container['cache_listener'] = $mainContainer->share(function () use($mainContainer) { return new CacheListener($mainContainer['core']['dispatcher']); }); $mainContainer['core']['dispatcher']->addSubscriber($container['cache_listener']); $mainContainer['core']['dispatcher']->addSubscriber($container['deserializer_listener']); $mainContainer['core']['dispatcher']->addSubscriber($container['logger_listener']); $mainContainer['consumer'] = $container; }
/** * The given closure is call the first time the given service is queried. * The closure has to return the instance for the given service. * Created instance will be cached in case $shared is true. * * @param string $name name of the service to register another backend for * @param \Closure $closure the closure to be called on service creation */ function registerService($name, \Closure $closure, $shared = true) { if ($shared) { $this[$name] = \Pimple::share($closure); } else { $this[$name] = $closure; } }
public function register(\Pimple $container) { $container['validator'] = $container->share(function ($container) { $r = new \ReflectionClass('Symfony\\Component\\Validator\\Validator'); if (isset($container['translator'])) { $container['translator']->addResource('xliff', dirname($r->getFilename()) . '/Resources/translations/validators.' . $container['locale'] . '.xlf', $container['locale'], 'validators'); } return new Validator($container['validator.mapping.class_metadata_factory'], $container['validator.validator_factory'], isset($container['translator']) ? $container['translator'] : new DefaultTranslator()); }); $container['validator.mapping.class_metadata_factory'] = $container->share(function ($container) { return new ClassMetadataFactory(new StaticMethodLoader()); }); $container['validator.validator_factory'] = $container->share(function () use($container) { $validators = isset($container['validator.validator_service_ids']) ? $container['validator.validator_service_ids'] : array(); return new ConstraintValidatorFactory($container, $validators); }); }
protected function set_user_agent($user_agent, Application $app) { $app['browser']->setUserAgent($user_agent); $app->register(new \Silex\Provider\TwigServiceProvider()); $app->setupTwig(); self::$DI['client'] = self::$DI->share(function ($DI) use($app) { return new Client($app, []); }); }
public static function registerFilters(\Pimple $container) { $container['inspector.filter_listener'] = $container->share($container->extend('inspector.filter_listener', function ($listener, $c) { $listener->addAvailableFilter('gitignore', function () { return new Filter\GitIgnoreFilter(); }); return $listener; })); }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Pimple $mainContainer An Container instance */ public function register(\Pimple $mainContainer) { $container = new \Pimple(); $container['dispatcher'] = $mainContainer->share(function () { $dispatcher = new EventDispatcher(); // Add listeners return $dispatcher; }); $mainContainer['core'] = $container; }
public function register(\Pimple $container) { if (!class_exists('Locale') && !class_exists('Symfony\\Component\\Locale\\Stub\\StubLocale')) { throw new \RuntimeException('You must either install the PHP intl extension or the Symfony Locale Component to use the Form extension.'); } if (!class_exists('Locale')) { $r = new \ReflectionClass('Symfony\\Component\\Locale\\Stub\\StubLocale'); $path = dirname(dirname($r->getFilename())) . '/Resources/stubs'; require_once $path . '/functions.php'; require_once $path . '/Collator.php'; require_once $path . '/IntlDateFormatter.php'; require_once $path . '/Locale.php'; require_once $path . '/NumberFormatter.php'; } $container['form.secret'] = md5(__DIR__); $container['form.type.extensions'] = $container->share(function ($container) { return array(); }); $container['form.type.guessers'] = $container->share(function ($container) { return array(); }); $container['form.extensions'] = $container->share(function ($container) { $extensions = array(new CsrfExtension($container['form.csrf_provider']), new HttpFoundationExtension()); if (isset($container['validator'])) { $extensions[] = new FormValidatorExtension($container['validator']); if (isset($container['translator'])) { $r = new \ReflectionClass('Symfony\\Component\\Form\\Form'); $container['translator']->addResource('xliff', dirname($r->getFilename()) . '/Resources/translations/validators.' . $container['locale'] . '.xlf', $container['locale'], 'validators'); } } return $extensions; }); $container['form.factory'] = $container->share(function ($container) { return Forms::createFormFactoryBuilder()->addExtensions($container['form.extensions'])->addTypeExtensions($container['form.type.extensions'])->addTypeGuessers($container['form.type.guessers'])->getFormFactory(); }); $container['form.csrf_provider'] = $container->share(function ($container) { if (isset($container['session'])) { return new SessionCsrfProvider($container['session'], $container['form.secret']); } return new DefaultCsrfProvider($container['form.secret']); }); }
public function register(\Pimple $container) { $container['knp_menu.route.voter'] = $container->share(function (\Pimple $container) { $voter = new RouteVoter(); $voter->setRequest($container['request_stack']->getCurrentRequest()); return $voter; }); $container['knp_menu.matcher.configure'] = $container->protect(function (Matcher $matcher) use($container) { $matcher->addVoter($container['knp_menu.route.voter']); }); }
/** * {@inheritDoc} */ public static function register(\Pimple $container) { $container['event_dispatcher.class'] = 'Zend\\EventManager\\EventManager'; if (class_exists($container['event_dispatcher.class'])) { $container['event_dispatcher'] = $container->share(function ($c) { return new $c['event_dispatcher.class'](); }); } else { throw new Exception\Provider\ClassNotFoundException('Event Dispatcher', $container['event_dispatcher.class']); } }
public static function registerApplication(\Pimple $container) { $container['console.application'] = $container->share(function ($c) { $app = new $c['console.application.class']($c); foreach ($c['console.command'] as $command) { $app->add($command()); } return $app; }); $container['console.command'] = new \ArrayObject(); self::registerCommands($container); }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param \Pimple $mainContainer An Container instance */ public function register(\Pimple $mainContainer) { $container = new \Pimple(); $container['collector.cache'] = $mainContainer->share(function () { return new CacheDataCollector(); }); $container['collector.db'] = $mainContainer->share(function () { return new DatabaseDataCollector(); }); $container['collector.route'] = $mainContainer->share(function () { return new RouteDataCollector(); }); $container['collector.config'] = $mainContainer->share(function () use($mainContainer) { return new ConfigDataCollector($mainContainer['config']); }); $container['bar'] = $mainContainer->share(function () use($mainContainer, $container) { $bar = new StandardDebugBar(); // Defaults collectors $bar->addCollector($container['collector.config']); $bar->addCollector($container['collector.cache']); $bar->addCollector($container['collector.db']); $bar->addCollector($container['collector.route']); return $bar; }); $container['renderer'] = $mainContainer->share(function () use($container) { return $container['bar']->getJavascriptRenderer(); }); $mainContainer['debug'] = $container; }
/** * Initialize the user. * * @param \Pimple $container The dependency container. * * @return void */ public function startup(\Pimple $container) { $container['workflow.security.user'] = $container->share(function () use($container) { $user = $this->createUser($container['event-dispatcher']); try { $contaoUser = $container['user']; $this->initializeContaoUser($user, $contaoUser); } catch (\Exception $e) { // Ignore error. Fetching user from container could throw an error for a unknown TL_MODE. } return $user; }); }
private function setGuzzleClient() { // Only used by Guzzle connections - won't be instantiated until used. $this->dic['guzzleClient'] = $this->dic->share(function ($dicParams) { $guzzleOptions = array(); $guzzleOptions['curl.options']['body_as_string'] = true; if (isset($dicParams['connectionParams']['auth']) === true) { $guzzleOptions['request.options']['auth'] = $dicParams['connectionParams']['auth']; } $guzzleOptions = array_merge($guzzleOptions, $dicParams['guzzleOptions']); $guzzle = new \Guzzle\Http\Client(null, $guzzleOptions); return $guzzle; }); }
public function register(\Pimple $container) { $container['translator'] = $container->share(function ($container) { $translator = new Translator($container['locale'], $container['translator.message_selector']); // Handle deprecated 'locale_fallback' if (isset($container['locale_fallback'])) { $container['locale_fallbacks'] = (array) $container['locale_fallback']; } $translator->setFallbackLocales($container['locale_fallbacks']); $translator->addLoader('array', new ArrayLoader()); $translator->addLoader('xliff', new XliffFileLoader()); foreach ($container['translator.domains'] as $domain => $data) { foreach ($data as $locale => $messages) { $translator->addResource('array', $messages, $locale, $domain); } } return $translator; }); $container['translator.message_selector'] = $container->share(function () { return new MessageSelector(); }); $container['translator.domains'] = array(); $container['locale_fallbacks'] = array('en'); }
/** * {@inheritdoc} */ public function register(\Pimple $container) { foreach ($this->getDefaults() as $key => $value) { if (!isset($container[$key])) { $container[$key] = $value; } } $container['console'] = $container->share(function () use($container) { $class = $container['console.class']; $instance = new $class(isset($container['console.name']) ? $container['console.name'] : '', isset($container['console.version']) ? $container['console.version'] : null); if ($instance instanceof ContainerAwareApplication) { $instance->setContainer($container); } return $instance; }); }
public function register(\Pimple $container) { $container['doctrine'] = $container->share(function ($container) { return new ManagerRegistry($container); }); if (isset($container['form.extensions']) && class_exists('Symfony\\Bridge\\Doctrine\\Form\\DoctrineOrmExtension')) { $container['form.extensions'] = $container->share($container->extend('form.extensions', function ($extensions, $container) { $extensions[] = new DoctrineOrmExtension($container['doctrine']); return $extensions; })); } if (isset($container['validator']) && class_exists('Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator')) { $container['doctrine.orm.validator.unique_validator'] = $container->share(function ($container) { return new UniqueEntityValidator($container['doctrine']); }); if (!isset($container['validator.validator_service_ids'])) { $container['validator.validator_service_ids'] = array(); } $container['validator.validator_service_ids'] = array_merge($container['validator.validator_service_ids'], array('doctrine.orm.validator.unique' => 'doctrine.orm.validator.unique_validator')); $container['validator.object_initializers'] = $container->share($container->extend('validator.object_initializers', function (array $objectInitializers) use($container) { $objectInitializers[] = new DoctrineInitializer($container['doctrine']); return $objectInitializers; })); } if (class_exists('Saxulum\\DoctrineOrmCommands\\Command\\CreateDatabaseDoctrineCommand')) { if (isset($container['console'])) { $container['console'] = $container->share($container->extend('console', function (ConsoleApplication $consoleApplication) use($container) { $helperSet = $consoleApplication->getHelperSet(); $helperSet->set(new ManagerRegistryHelper($container['doctrine']), 'doctrine'); return $consoleApplication; })); } if (isset($container['console.commands'])) { $container['console.commands'] = $container->share($container->extend('console.commands', function ($commands) use($container) { $commands[] = new CreateDatabaseDoctrineCommand(); $commands[] = new DropDatabaseDoctrineCommand(); $commands[] = new CreateSchemaDoctrineCommand(); $commands[] = new UpdateSchemaDoctrineCommand(); $commands[] = new DropSchemaDoctrineCommand(); $commands[] = new RunDqlDoctrineCommand(); $commands[] = new RunSqlDoctrineCommand(); $commands[] = new ConvertMappingDoctrineCommand(); $commands[] = new ClearMetadataCacheDoctrineCommand(); $commands[] = new ClearQueryCacheDoctrineCommand(); $commands[] = new ClearResultCacheDoctrineCommand(); $commands[] = new InfoDoctrineCommand(); $commands[] = new ValidateSchemaCommand(); $commands[] = new EnsureProductionSettingsDoctrineCommand(); return $commands; })); } } }
/** * {@inheritdoc} */ protected function registerTwigFunctions() { //$twig = new Twig\BoltFormsExtension($this->getContainer(), $this->getConfig()); // //return [ // 'boltforms' => [[$twig, 'twigBoltForms'], ['is_safe' => ['html'], 'is_safe_callback' => true]], // 'boltforms_uploads' => [[$twig, 'twigBoltFormsUploads'], []], //]; $twig = Container::share(function () { return new Twig\BoltFormsExtension($this->getContainer(), $this->getConfig()); }); $forms = Container::share(function ($formName, $htmlPreSubmit = '', $htmlPostSubmit = '', $data = [], $options = []) use($twig) { return $twig(true)->twigBoltForms($formName, $htmlPreSubmit, $htmlPostSubmit, $data, $options); }); $uploads = Container::share(function () use($twig) { return $twig(true)->twigBoltFormsUploads(); }); return ['boltforms' => [$forms, ['is_safe' => ['html'], 'is_safe_callback' => true]], 'boltforms_uploads' => [$uploads, []]]; }
public function register(Application $app) { $app['idiorm.dbs.options.initializer'] = $app->protect(function () use($app) { static $initialized = false; if ($initialized) { return; } $initialized = true; if (!isset($app['idiorm.dbs.options'])) { $app['idiorm.dbs.options'] = array('default' => isset($app['idiorm.db.options']) ? $app['idiorm.db.options'] : array()); } // If default configuration was not found, setting first one from idiorm.dbs as such if (!isset($app['idiorm.dbs.default'])) { $tmp = $app['idiorm.dbs.options']; $app['idiorm.dbs.default'] = key($tmp); } // Creating connection for each configuration $tmp = $app['idiorm.dbs.options']; foreach ($tmp as $name => $options) { if ($app['idiorm.dbs.default'] === $name) { \ORM::configure($options); } \ORM::configure($options, null, $name); } }); $app['idiorm.dbs'] = $app->share(function ($app) { $app['idiorm.dbs.options.initializer'](); $dbs = new \Pimple(); // Configuration is already set, so we just need keys to return connection foreach (array_keys($app['idiorm.dbs.options']) as $connectionName) { $dbs[$connectionName] = $dbs->share(function () use($connectionName) { return new \Arseniew\Silex\Service\IdiormService($connectionName); }); } return $dbs; }); $app['idiorm.db'] = $app->share(function ($app) { $dbs = $app['idiorm.dbs']; return $dbs[$app['idiorm.dbs.default']]; }); }