8
8
use PhpSchool \PhpWorkshop \Check \CheckRepository ;
9
9
use PhpSchool \PhpWorkshop \Exception \MissingArgumentException ;
10
10
use PhpSchool \PhpWorkshop \Exercise \ExerciseInterface ;
11
+ use PhpSchool \PhpWorkshop \Factory \ResultRendererFactory ;
11
12
use PhpSchool \PhpWorkshop \Output \OutputInterface ;
12
13
use PhpSchool \PhpWorkshop \ResultRenderer \ResultRendererInterface ;
13
14
@@ -33,6 +34,11 @@ final class Application
33
34
*/
34
35
private $ exercises = [];
35
36
37
+ /**
38
+ * @var array
39
+ */
40
+ private $ results = [];
41
+
36
42
/**
37
43
* @var string
38
44
*/
@@ -82,6 +88,21 @@ public function addExercise($exercise)
82
88
$ this ->exercises [] = $ exercise ;
83
89
}
84
90
91
+ /**
92
+ * @param string $resultClass
93
+ * @param string $resultRendererClass
94
+ */
95
+ public function addResult ($ resultClass , $ resultRendererClass )
96
+ {
97
+ Assertion::classExists ($ resultClass );
98
+ Assertion::classExists ($ resultRendererClass );
99
+
100
+ $ this ->results [] = [
101
+ 'resultClass ' => $ resultClass ,
102
+ 'resultRendererClass ' => $ resultRendererClass
103
+ ];
104
+ }
105
+
85
106
/**
86
107
* @param string $logo
87
108
*/
@@ -152,6 +173,14 @@ public function run()
152
173
$ checkRepository ->registerCheck ($ container ->get ($ check ));
153
174
}
154
175
176
+ if (!empty ($ this ->results )) {
177
+ $ resultFactory = $ container ->get (ResultRendererFactory::class);
178
+
179
+ foreach ($ this ->results as $ result ) {
180
+ $ resultFactory ->registerRenderer ($ result ['resultClass ' ], $ result ['resultRendererClass ' ]);
181
+ }
182
+ }
183
+
155
184
try {
156
185
$ exitCode = $ container ->get (CommandRouter::class)->route ();
157
186
} catch (MissingArgumentException $ e ) {
0 commit comments