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; }
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'); }
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.'); } }