1 | <?php |
||
23 | class Resolver |
||
24 | { |
||
25 | /** |
||
26 | * @var array |
||
27 | */ |
||
28 | protected $definition = []; |
||
29 | |||
30 | /** |
||
31 | * Constructor params in the form `$params[$class][$name] = $value`. |
||
32 | * |
||
33 | * @var array |
||
34 | */ |
||
35 | protected $params = []; |
||
36 | |||
37 | /** |
||
38 | * Setter definitions in the form of `$setters[$class][$method] = $value`. |
||
39 | * |
||
40 | * @var array |
||
41 | */ |
||
42 | protected $setters = []; |
||
43 | |||
44 | /** |
||
45 | * Constructor params and setter definitions, unified across class |
||
46 | * defaults, inheritance hierarchies, and configuration. |
||
47 | * |
||
48 | * @var array |
||
49 | */ |
||
50 | protected $unifiedClass = []; |
||
51 | |||
52 | /** |
||
53 | * Arbitrary values in the form of `$values[$key] = $value`. |
||
54 | * |
||
55 | * @var array |
||
56 | */ |
||
57 | protected $values = []; |
||
58 | |||
59 | /** |
||
60 | * A Reflector. |
||
61 | * |
||
62 | * @var Reflector |
||
63 | */ |
||
64 | protected $reflector; |
||
65 | |||
66 | /** |
||
67 | * @var ParameterResolver |
||
68 | */ |
||
69 | protected $parameterResolver; |
||
70 | |||
71 | /** |
||
72 | * @var SetterResolver |
||
73 | */ |
||
74 | protected $setterResolver; |
||
75 | |||
76 | /** |
||
77 | * Resolver constructor. |
||
78 | * |
||
79 | * @param Reflector $reflector |
||
80 | */ |
||
81 | public function __construct(Reflector $reflector) |
||
87 | |||
88 | /** |
||
89 | * @param $definition |
||
90 | */ |
||
91 | public function add($definition) |
||
95 | |||
96 | /** |
||
97 | * Creates and returns a new instance of a class using reflection and |
||
98 | * the configuration parameters, optionally with overrides, invoking Lazy |
||
99 | * values along the way. |
||
100 | * |
||
101 | * @param string $class The class to instantiate. |
||
102 | * @param array $mergeParams An array of override parameters. |
||
103 | * @param array $mergeSetters An array of override setters. |
||
104 | * |
||
105 | * @return object |
||
106 | */ |
||
107 | public function resolve( |
||
122 | |||
123 | /** |
||
124 | * Returns the unified constructor params and setters for a class. |
||
125 | * |
||
126 | * @param string $class The class name to return values for. |
||
127 | * |
||
128 | * @return array An array with two elements; 0 is the constructor params |
||
129 | * for the class, and 1 is the setter methods and values for the class. |
||
130 | */ |
||
131 | public function getUnifiedClass($class) |
||
149 | |||
150 | /** |
||
151 | * Returns the unified constructor params for a class. |
||
152 | * |
||
153 | * @param string $class The class name to return values for. |
||
154 | * @param array $parent The parent unified params. |
||
155 | * |
||
156 | * @return array The unified params. |
||
157 | */ |
||
158 | protected function getUnifiedClassParams($class, array $parent) |
||
172 | |||
173 | /** |
||
174 | * Returns a unified param. |
||
175 | * |
||
176 | * @param \ReflectionParameter $param A parameter reflection. |
||
177 | * @param string $class The class name to return values for. |
||
178 | * @param array $parent The parent unified params. |
||
179 | * |
||
180 | * @return mixed The unified param value. |
||
181 | */ |
||
182 | protected function getUnifiedClassParam(\ReflectionParameter $param, $class, $parent) |
||
245 | |||
246 | /** |
||
247 | * Returns the unified setters for a class. |
||
248 | * Class-specific setters take precedence over trait-based setters, which |
||
249 | * take precedence over interface-based setters. |
||
250 | * |
||
251 | * @param string $class The class name to return values for. |
||
252 | * @param array $parent The parent unified setters. |
||
253 | * |
||
254 | * @return array The unified setters. |
||
255 | */ |
||
256 | protected function getUnifiedClassSetters($class, array $parent) |
||
296 | |||
297 | /** |
||
298 | * Add constructor parameters definition. |
||
299 | * |
||
300 | * @param array $params |
||
301 | */ |
||
302 | public function addParams($params) |
||
306 | |||
307 | /** |
||
308 | * Add setter parameters definition. |
||
309 | * |
||
310 | * @param array $setters |
||
311 | */ |
||
312 | public function addSetters($setters) |
||
316 | } |
||
317 |
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.
To visualize
will produce issues in the first and second line, while this second example
will produce no issues.