isDynamicSetting() публичный Метод

i.e. if $setting follows the expected format.
public isDynamicSetting ( string $setting ) : boolean
$setting string
Результат boolean
Пример #1
0
 /**
  * Adds dynamic settings notation support: $<paramName>[;<namespace>[;<scope>]]$.
  *
  * {@inheritdoc}
  */
 protected function parseInput($input, array $options = array())
 {
     if ($this->dynamicSettingParser->isDynamicSetting($input)) {
         $parsedSettings = $this->dynamicSettingParser->parseDynamicSetting($input);
         $input = $this->configResolver->getParameter($parsedSettings['param'], $parsedSettings['namespace'], $parsedSettings['scope']);
         if (is_array($input)) {
             $collection = $this->createAssetCollection(array(), $options);
             foreach ($input as $file) {
                 $collection->add(parent::parseInput($file, $options));
             }
             return $collection;
         }
     }
     return parent::parseInput($input, $options);
 }
 /**
  * Builds the proxy client, taking dynamically defined servers into account.
  *
  * @param array $servers
  * @param string $baseUrl
  *
  * @return \FOS\HttpCache\ProxyClient\Varnish
  */
 public function buildProxyClient(array $servers, $baseUrl)
 {
     $allServers = array();
     foreach ($servers as $server) {
         if (!$this->dynamicSettingParser->isDynamicSetting($server)) {
             $allServers[] = $server;
             continue;
         }
         $settings = $this->dynamicSettingParser->parseDynamicSetting($server);
         $configuredServers = $this->configResolver->getParameter($settings['param'], $settings['namespace'], $settings['scope']);
         $allServers = array_merge($allServers, (array) $configuredServers);
     }
     $class = $this->proxyClientClass;
     return new $class($allServers, $baseUrl);
 }
 public function process(ContainerBuilder $container)
 {
     $dynamicSettingsServices = array();
     $resettableServices = array();
     $updateableServices = $container->getParameter('ezpublish.config_resolver.updateable_services');
     // Pass #1 Loop against all arguments of all service definitions to replace dynamic settings by the fake service.
     foreach ($container->getDefinitions() as $serviceId => $definition) {
         // Constructor injection
         $replaceArguments = array();
         foreach ($definition->getArguments() as $i => $arg) {
             if (!$this->dynamicSettingParser->isDynamicSetting($arg)) {
                 continue;
             }
             // Decorators use index_X for their key
             if (strpos($i, 'index') === 0) {
                 $i = (int) substr($i, strlen('index_'));
             }
             $replaceArguments[$i] = $this->createExpression($this->dynamicSettingParser->parseDynamicSetting($arg));
         }
         if (!empty($replaceArguments)) {
             $dynamicSettingsServices[$serviceId] = true;
             foreach ($replaceArguments as $i => $arg) {
                 $definition->replaceArgument($i, $arg);
             }
         }
         // Setter injection
         $methodCalls = $definition->getMethodCalls();
         foreach ($methodCalls as $i => &$call) {
             list($method, $callArgs) = $call;
             $callHasDynamicSetting = false;
             foreach ($callArgs as &$callArg) {
                 if (!$this->dynamicSettingParser->isDynamicSetting($callArg)) {
                     continue;
                 }
                 $callArg = $this->createExpression($this->dynamicSettingParser->parseDynamicSetting($callArg));
                 $callHasDynamicSetting = true;
             }
             $call = array($method, $callArgs);
             if ($callHasDynamicSetting) {
                 // We only support single dynamic setting injection for updatable services.
                 if (count($callArgs) == 1) {
                     $updateableServices[$serviceId][] = [$method, (string) $callArgs[0]];
                 } else {
                     // Method call has more than 1 argument, so we will reset it instead of updating it.
                     $dynamicSettingsServices[$serviceId] = true;
                     // Ensure current service is not registered as updatable service.
                     unset($updateableServices[$serviceId]);
                 }
             }
         }
         $definition->setMethodCalls($methodCalls);
     }
     // Pass #2 Loop again, to get all services depending on dynamic settings services.
     foreach ($container->getDefinitions() as $id => $definition) {
         $isDependent = false;
         foreach ($definition->getArguments() as $arg) {
             if (!($arg instanceof Reference && isset($dynamicSettingsServices[(string) $arg]))) {
                 continue;
             }
             $isDependent = true;
             break;
         }
         if ($isDependent) {
             $resettableServices[] = $id;
         }
     }
     $resettableServices = array_unique(array_merge(array_keys($dynamicSettingsServices), $resettableServices));
     $container->setParameter('ezpublish.config_resolver.resettable_services', $resettableServices);
     $container->setParameter('ezpublish.config_resolver.updateable_services', $updateableServices);
 }
 public function process(ContainerBuilder $container)
 {
     $dynamicSettingsServices = array();
     $resettableServices = array();
     $fakeServices = array();
     // Pass #1 Loop against all arguments of all service definitions to replace dynamic settings by the fake service.
     foreach ($container->getDefinitions() as $serviceId => $definition) {
         // Constructor injection
         $replaceArguments = array();
         foreach ($definition->getArguments() as $i => $arg) {
             if (!$this->dynamicSettingParser->isDynamicSetting($arg)) {
                 continue;
             }
             // Decorators use index_X for their key
             if (strpos($i, 'index') === 0) {
                 $i = (int) substr($i, strlen('index_'));
             }
             $fakeServiceId = $this->injectFakeService($container, $this->getConfigResolverArgs($arg));
             $replaceArguments[$i] = new Reference($fakeServiceId, ContainerInterface::NULL_ON_INVALID_REFERENCE);
             $fakeServices[] = $fakeServiceId;
         }
         if (!empty($replaceArguments)) {
             $dynamicSettingsServices[$serviceId] = true;
             foreach ($replaceArguments as $i => $arg) {
                 $definition->replaceArgument($i, $arg);
             }
         }
         // Setter injection
         $methodCalls = $definition->getMethodCalls();
         foreach ($methodCalls as $i => &$call) {
             list($method, $callArgs) = $call;
             foreach ($callArgs as &$callArg) {
                 if (!$this->dynamicSettingParser->isDynamicSetting($callArg)) {
                     continue;
                 }
                 $fakeServiceId = $this->injectFakeService($container, $this->getConfigResolverArgs($callArg));
                 $callArg = new Reference($fakeServiceId, ContainerInterface::NULL_ON_INVALID_REFERENCE);
                 $fakeServices[] = $fakeServiceId;
             }
             $call = array($method, $callArgs);
         }
         $definition->setMethodCalls($methodCalls);
     }
     // Pass #2 Loop again, to get all services depending on dynamic settings services.
     foreach ($container->getDefinitions() as $id => $definition) {
         $isDependent = false;
         foreach ($definition->getArguments() as $arg) {
             if (!($arg instanceof Reference && isset($dynamicSettingsServices[(string) $arg]))) {
                 continue;
             }
             $isDependent = true;
             break;
         }
         if ($isDependent) {
             $resettableServices[] = $id;
         }
     }
     $resettableServices = array_unique(array_merge(array_keys($dynamicSettingsServices), $resettableServices));
     $container->setParameter('ezpublish.config_resolver.resettable_services', $resettableServices);
     $container->setParameter('ezpublish.config_resolver.dynamic_settings_services', array_unique($fakeServices));
 }