Fix bug in style changes for the Use cases on the live site.
[yaffs-website] / vendor / symfony / dependency-injection / Compiler / PassConfig.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\DependencyInjection\Compiler;
13
14 use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
15
16 /**
17  * Compiler Pass Configuration.
18  *
19  * This class has a default configuration embedded.
20  *
21  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
22  */
23 class PassConfig
24 {
25     const TYPE_AFTER_REMOVING = 'afterRemoving';
26     const TYPE_BEFORE_OPTIMIZATION = 'beforeOptimization';
27     const TYPE_BEFORE_REMOVING = 'beforeRemoving';
28     const TYPE_OPTIMIZE = 'optimization';
29     const TYPE_REMOVE = 'removing';
30
31     private $mergePass;
32     private $afterRemovingPasses = array();
33     private $beforeOptimizationPasses = array();
34     private $beforeRemovingPasses = array();
35     private $optimizationPasses;
36     private $removingPasses;
37
38     public function __construct()
39     {
40         $this->mergePass = new MergeExtensionConfigurationPass();
41
42         $this->optimizationPasses = array(
43             new ExtensionCompilerPass(),
44             new ResolveDefinitionTemplatesPass(),
45             new DecoratorServicePass(),
46             new ResolveParameterPlaceHoldersPass(),
47             new CheckDefinitionValidityPass(),
48             new ResolveReferencesToAliasesPass(),
49             new ResolveInvalidReferencesPass(),
50             new AutowirePass(),
51             new AnalyzeServiceReferencesPass(true),
52             new CheckCircularReferencesPass(),
53             new CheckReferenceValidityPass(),
54         );
55
56         $this->removingPasses = array(
57             new RemovePrivateAliasesPass(),
58             new ReplaceAliasByActualDefinitionPass(),
59             new RemoveAbstractDefinitionsPass(),
60             new RepeatedPass(array(
61                 new AnalyzeServiceReferencesPass(),
62                 new InlineServiceDefinitionsPass(),
63                 new AnalyzeServiceReferencesPass(),
64                 new RemoveUnusedDefinitionsPass(),
65             )),
66             new CheckExceptionOnInvalidReferenceBehaviorPass(),
67         );
68     }
69
70     /**
71      * Returns all passes in order to be processed.
72      *
73      * @return array An array of all passes to process
74      */
75     public function getPasses()
76     {
77         return array_merge(
78             array($this->mergePass),
79             $this->beforeOptimizationPasses,
80             $this->optimizationPasses,
81             $this->beforeRemovingPasses,
82             $this->removingPasses,
83             $this->afterRemovingPasses
84         );
85     }
86
87     /**
88      * Adds a pass.
89      *
90      * @param CompilerPassInterface $pass A Compiler pass
91      * @param string                $type The pass type
92      *
93      * @throws InvalidArgumentException when a pass type doesn't exist
94      */
95     public function addPass(CompilerPassInterface $pass, $type = self::TYPE_BEFORE_OPTIMIZATION)
96     {
97         $property = $type.'Passes';
98         if (!isset($this->$property)) {
99             throw new InvalidArgumentException(sprintf('Invalid type "%s".', $type));
100         }
101
102         $this->{$property}[] = $pass;
103     }
104
105     /**
106      * Gets all passes for the AfterRemoving pass.
107      *
108      * @return array An array of passes
109      */
110     public function getAfterRemovingPasses()
111     {
112         return $this->afterRemovingPasses;
113     }
114
115     /**
116      * Gets all passes for the BeforeOptimization pass.
117      *
118      * @return array An array of passes
119      */
120     public function getBeforeOptimizationPasses()
121     {
122         return $this->beforeOptimizationPasses;
123     }
124
125     /**
126      * Gets all passes for the BeforeRemoving pass.
127      *
128      * @return array An array of passes
129      */
130     public function getBeforeRemovingPasses()
131     {
132         return $this->beforeRemovingPasses;
133     }
134
135     /**
136      * Gets all passes for the Optimization pass.
137      *
138      * @return array An array of passes
139      */
140     public function getOptimizationPasses()
141     {
142         return $this->optimizationPasses;
143     }
144
145     /**
146      * Gets all passes for the Removing pass.
147      *
148      * @return array An array of passes
149      */
150     public function getRemovingPasses()
151     {
152         return $this->removingPasses;
153     }
154
155     /**
156      * Gets the Merge pass.
157      *
158      * @return CompilerPassInterface The merge pass
159      */
160     public function getMergePass()
161     {
162         return $this->mergePass;
163     }
164
165     /**
166      * Sets the Merge Pass.
167      *
168      * @param CompilerPassInterface $pass The merge pass
169      */
170     public function setMergePass(CompilerPassInterface $pass)
171     {
172         $this->mergePass = $pass;
173     }
174
175     /**
176      * Sets the AfterRemoving passes.
177      *
178      * @param array $passes An array of passes
179      */
180     public function setAfterRemovingPasses(array $passes)
181     {
182         $this->afterRemovingPasses = $passes;
183     }
184
185     /**
186      * Sets the BeforeOptimization passes.
187      *
188      * @param array $passes An array of passes
189      */
190     public function setBeforeOptimizationPasses(array $passes)
191     {
192         $this->beforeOptimizationPasses = $passes;
193     }
194
195     /**
196      * Sets the BeforeRemoving passes.
197      *
198      * @param array $passes An array of passes
199      */
200     public function setBeforeRemovingPasses(array $passes)
201     {
202         $this->beforeRemovingPasses = $passes;
203     }
204
205     /**
206      * Sets the Optimization passes.
207      *
208      * @param array $passes An array of passes
209      */
210     public function setOptimizationPasses(array $passes)
211     {
212         $this->optimizationPasses = $passes;
213     }
214
215     /**
216      * Sets the Removing passes.
217      *
218      * @param array $passes An array of passes
219      */
220     public function setRemovingPasses(array $passes)
221     {
222         $this->removingPasses = $passes;
223     }
224 }