예제 #1
0
파일: bootstrap.php 프로젝트: nanowish/apps
/**
 * @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;
}
예제 #2
0
파일: bootstrap.php 프로젝트: noldmess/apps
/**
 * @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;
}
예제 #3
0
 /**
  * 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());
     });
 }
예제 #4
0
 /**
  * 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')));
     });
 }
예제 #6
0
 /**
  * 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;
 }
예제 #7
0
 /**
  * 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']);
 }
예제 #8
0
 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']);
     });
 }
예제 #9
0
 /**
  * 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']);
 }
예제 #10
0
 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']];
     });
 }
예제 #12
0
파일: Container.php 프로젝트: elfet/simple
 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();
 }
예제 #13
0
 /**
  * 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;
 }
예제 #14
0
 /**
  * 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;
     }
 }
예제 #15
0
 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, []);
     });
 }
예제 #17
0
 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;
     }));
 }
예제 #18
0
 /**
  * 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;
 }
예제 #19
0
 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']);
     }
 }
예제 #22
0
 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);
 }
예제 #23
0
 /**
  * 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;
 }
예제 #24
0
 /**
  * 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;
     });
 }
예제 #25
0
 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;
     });
 }
예제 #26
0
 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;
             }));
         }
     }
 }
예제 #29
0
 /**
  * {@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']];
     });
 }