3
3
namespace Sevavietl \OverloadedFunction \Signature ;
4
4
5
5
use Sevavietl \OverloadedFunction \Signature \Types \Type ;
6
- use Sevavietl \OverloadedFunction \Signature \Types \DisjoinedType ;
7
- use Sevavietl \OverloadedFunction \Signature \Types \ConjoinedType ;
6
+ use Sevavietl \OverloadedFunction \Signature \Types \UnionType ;
7
+ use Sevavietl \OverloadedFunction \Signature \Types \IntersectionType ;
8
8
use Sevavietl \OverloadedFunction \Signature \Types \OptionalType ;
9
9
10
10
class Signature
11
11
{
12
+ const UNION_TYPE_SEPARATOR = '| ' ;
13
+ const INTERSECTION_TYPE_SEPARATOR = '& ' ;
14
+
12
15
private $ types ;
13
16
14
17
public function __construct ($ stringRepresentation )
@@ -25,10 +28,10 @@ private function parseStringRepresentation($stringRepresentation)
25
28
$ paramType = substr ($ paramType , 1 );
26
29
}
27
30
28
- if ($ this ->isDisjoined ($ paramType )) {
29
- $ type = new DisjoinedType (explode (' | ' , $ paramType ));
30
- } elseif ($ this ->isConjoined ($ paramType )) {
31
- $ type = new ConjoinedType (explode (' & ' , $ paramType ));
31
+ if ($ this ->isUnion ($ paramType )) {
32
+ $ type = new UnionType (explode (self :: UNION_TYPE_SEPARATOR , $ paramType ));
33
+ } elseif ($ this ->isIntersection ($ paramType )) {
34
+ $ type = new IntersectionType (explode (self :: INTERSECTION_TYPE_SEPARATOR , $ paramType ));
32
35
} else {
33
36
$ type = new Type ($ paramType );
34
37
}
@@ -42,14 +45,14 @@ private function isOptional($paramType)
42
45
return strpos ($ paramType , '? ' ) === 0 ;
43
46
}
44
47
45
- private function isDisjoined ($ paramType )
48
+ private function isUnion ($ paramType )
46
49
{
47
- return strpos ($ paramType , ' | ' ) !== false ;
50
+ return strpos ($ paramType , self :: UNION_TYPE_SEPARATOR ) !== false ;
48
51
}
49
52
50
- private function isConjoined ($ paramType )
53
+ private function isIntersection ($ paramType )
51
54
{
52
- return strpos ($ paramType , ' & ' ) !== false ;
55
+ return strpos ($ paramType , self :: INTERSECTION_TYPE_SEPARATOR ) !== false ;
53
56
}
54
57
55
58
public function match (array $ params )
0 commit comments