コード例 #1
0
 public function build(ServiceDefinitionInterface $service_definition, SettingsInterface $provisioner_settings)
 {
     $service = $service_definition->getClass();
     $state = [':config' => $service_definition->getConfig()];
     if ($provisioner_settings->has('logger')) {
         $logger_name = $provisioner_settings->get('logger', 'default');
         $logger = AgaviContext::getInstance()->getLoggerManager()->getLogger($logger_name)->getPsr3Logger();
         $state[':logger'] = $logger;
     }
     if ($provisioner_settings->has('connector')) {
         $connector_name = $provisioner_settings->get('connector', 'default');
         $connector_service = $this->di_container->make(ConnectorServiceInterface::CLASS);
         $state[':connector'] = $connector_service->getConnector($connector_name);
     }
     $this->di_container->define($service, $state);
     // there will only be one instance of the service when the "share" setting is true
     if ($provisioner_settings->get('share', true) === true) {
         $this->di_container->share($service);
     }
     if ($provisioner_settings->has('alias')) {
         $alias = $provisioner_settings->get('alias');
         if (!is_string($alias) && !class_exists($alias)) {
             throw new ConfigError('Alias given must be an existing class or interface name (fully qualified).');
         }
         $this->di_container->alias($alias, $service);
     }
 }
 protected function createTwigLoader(SettingsInterface $settings)
 {
     if (!$settings->has('template_paths')) {
         throw new RuntimeError('Missing "template_paths" settings with template lookup locations.');
     }
     $template_paths = (array) $settings->get('template_paths', []);
     $loader = new FilesystemLoader($template_paths);
     if ($settings->has('allowed_template_extensions')) {
         $loader->setAllowedExtensions((array) $settings->get('allowed_template_extensions'));
     }
     if (!$settings->has('cache_scope')) {
         $loader->setScope(spl_object_hash($loader));
         // unique scope for each new loader instance
     } else {
         $loader->setScope($settings->get('cache_scope', FilesystemLoader::SCOPE_DEFAULT));
     }
     // adds an @namespaces to templates to allow twig templates to use embed/include statements that reuse
     // existing templates to override blocks instead of copying whole templates (from different locations)
     // usage example: {% include "@Honeybee/foo.twig" ignore if missing %}
     $loader->addPath(AgaviConfig::get('core.template_dir'), 'App');
     $loader->addPath(AgaviConfig::get('core.honeybee_template_dir'), 'Honeybee');
     foreach ($this->getModuleTemplatesPaths() as $module_name => $templates_path) {
         $loader->addPath($templates_path, $module_name);
     }
     return $loader;
 }
コード例 #3
0
ファイル: LimitRetries.php プロジェクト: honeybee/honeybee
 public function __construct(JobInterface $job, SettingsInterface $settings)
 {
     if (!$settings->has('limit')) {
         throw new RuntimeError('LimitRetries strategy requires "limit" setting.');
     }
     $this->job = $job;
     $this->limit = $settings->get('limit');
 }
コード例 #4
0
ファイル: ExpiresAfter.php プロジェクト: honeybee/honeybee
 public function __construct(JobInterface $job, SettingsInterface $settings)
 {
     if (!$settings->has('interval')) {
         throw new RuntimeError('ExpiresAfter strategy requires "interval" setting.');
     }
     $this->job = $job;
     $this->interval = $settings->get('interval');
     if (!(new DateTimeImmutable('@0'))->add(DateInterval::createFromDateString($this->interval))->getTimestamp()) {
         throw new RuntimeError('ExpiresAfter strategy "interval" setting should be a valid time string.');
     }
 }