File tree 2 files changed +40
-0
lines changed
2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change 4
4
5
5
use Http \Discovery \Exception \ClassInstantiationFailedException ;
6
6
use Http \Discovery \Exception \DiscoveryFailedException ;
7
+ use Http \Discovery \Exception \NoCandidateFoundException ;
7
8
use Http \Discovery \Exception \StrategyUnavailableException ;
8
9
9
10
/**
@@ -70,6 +71,8 @@ protected static function findOneByType($type)
70
71
71
72
return $ candidate ['class ' ];
72
73
}
74
+
75
+ $ exceptions [] = new NoCandidateFoundException ($ strategy , $ candidates );
73
76
}
74
77
75
78
throw DiscoveryFailedException::create ($ exceptions );
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ namespace Http \Discovery \Exception ;
6
+
7
+ use Http \Discovery \Exception ;
8
+
9
+ /**
10
+ * When we have used a strategy but no candidates provided by that strategy could be used.
11
+ *
12
+ * @author Tobias Nyholm <[email protected] >
13
+ */
14
+ final class NoCandidateFoundException extends \Exception implements Exception
15
+ {
16
+ /**
17
+ * @param string $strategy
18
+ * @param array $candidates
19
+ */
20
+ public function __construct ($ strategy , array $ candidates )
21
+ {
22
+ $ classes = array_map (
23
+ function ($ a ) {
24
+ return $ a ['class ' ];
25
+ },
26
+ $ candidates
27
+ );
28
+
29
+ $ message = sprintf (
30
+ 'No valid candidate found using strategy "%s". We tested the following candidates: %s. ' ,
31
+ $ strategy ,
32
+ implode (', ' , $ classes )
33
+ );
34
+
35
+ parent ::__construct ($ message );
36
+ }
37
+ }
You can’t perform that action at this time.
0 commit comments