1 | <?php |
||
29 | class TaskExtension extends Extension |
||
30 | { |
||
31 | /** |
||
32 | * {@inheritdoc} |
||
33 | */ |
||
34 | 30 | public function load(array $configs, ContainerBuilder $container) |
|
35 | { |
||
36 | 30 | $configuration = $this->getConfiguration($configs, $container); |
|
37 | 30 | $config = $this->processConfiguration($configuration, $configs); |
|
|
|||
38 | |||
39 | 30 | $container->setParameter('task.system_tasks', $config['system_tasks']); |
|
40 | |||
41 | 30 | $container->setAlias('task.lock.storage', $configuration->getLockingStorageId($config['locking']['storage'])); |
|
42 | 30 | foreach (array_keys($config['locking']['storages']) as $key) { |
|
43 | 30 | $container->setParameter('task.lock.storages.' . $key, $config['locking']['storages'][$key]); |
|
44 | 30 | } |
|
45 | |||
46 | 30 | $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); |
|
47 | 30 | $loader->load(sprintf('storage/%s.xml', $config['storage'])); |
|
48 | 30 | $loader->load('task_event_listener.xml'); |
|
49 | 30 | $loader->load('scheduler.xml'); |
|
50 | 30 | $loader->load('command.xml'); |
|
51 | 30 | $loader->load('locking/services.xml'); |
|
52 | |||
53 | 30 | if ($config['run']['mode'] === 'listener') { |
|
54 | $loader->load('listener.xml'); |
||
55 | } |
||
56 | |||
57 | 30 | $this->loadDoctrineAdapter($config['adapters']['doctrine'], $container); |
|
58 | 30 | $this->loadLockingComponent($config['locking'], $container, $loader); |
|
59 | 30 | $this->loadExecutorComponent($config['executor'], $container, $loader); |
|
60 | 30 | } |
|
61 | |||
62 | /** |
||
63 | * Load doctrine adapter. |
||
64 | * |
||
65 | * @param array $config |
||
66 | * @param ContainerBuilder $container |
||
67 | */ |
||
68 | 30 | private function loadDoctrineAdapter(array $config, ContainerBuilder $container) |
|
82 | |||
83 | /** |
||
84 | * Load services for locking component. |
||
85 | * |
||
86 | * @param array $config |
||
87 | * @param LoaderInterface $loader |
||
88 | * @param ContainerBuilder $container |
||
89 | */ |
||
90 | 30 | private function loadLockingComponent(array $config, ContainerBuilder $container, LoaderInterface $loader) |
|
99 | |||
100 | /** |
||
101 | * Load services for executor component. |
||
102 | * |
||
103 | * @param array $config |
||
104 | * @param LoaderInterface $loader |
||
105 | * @param ContainerBuilder $container |
||
106 | */ |
||
107 | 30 | private function loadExecutorComponent(array $config, ContainerBuilder $container, LoaderInterface $loader) |
|
126 | |||
127 | /** |
||
128 | * Find storage aliases and related ids. |
||
129 | * |
||
130 | * @param ContainerBuilder $container |
||
131 | * |
||
132 | * @return array |
||
133 | */ |
||
134 | 30 | private function getLockingStorageAliases(ContainerBuilder $container) |
|
147 | |||
148 | /** |
||
149 | * {@inheritdoc} |
||
150 | */ |
||
151 | 30 | public function getConfiguration(array $config, ContainerBuilder $container) |
|
158 | } |
||
159 |
Unless you are absolutely sure that the expression can never be null because of other conditions, we strongly recommend to add an additional type check to your code: