5
5
6
6
use JsonApiPhp \JsonApi \Document \LinksTrait ;
7
7
use JsonApiPhp \JsonApi \Document \Meta ;
8
+ use JsonApiPhp \JsonApi \Document \ReservedName ;
8
9
9
10
class ResourceObject implements \JsonSerializable
10
11
{
@@ -22,7 +23,7 @@ class ResourceObject implements \JsonSerializable
22
23
23
24
public function __construct (string $ type , string $ id = null )
24
25
{
25
- $ this ->type = $ type ;
26
+ $ this ->type = new ResourceType ( $ type) ;
26
27
$ this ->id = $ id ;
27
28
}
28
29
@@ -33,12 +34,7 @@ public function setMeta(Meta $meta)
33
34
34
35
public function setAttribute (string $ name , $ value )
35
36
{
36
- if ($ this ->isReservedName ($ name )) {
37
- throw new \InvalidArgumentException ("Can not use a reserved name ' $ name' " );
38
- }
39
- if (!$ this ->isValidMemberName ($ name )) {
40
- throw new \OutOfBoundsException ("Not a valid attribute name ' $ name' " );
41
- }
37
+ $ name = (string ) new ReservedName ($ name );
42
38
if (isset ($ this ->relationships [$ name ])) {
43
39
throw new \LogicException ("Field ' $ name' already exists in relationships " );
44
40
}
@@ -47,12 +43,7 @@ public function setAttribute(string $name, $value)
47
43
48
44
public function setRelationship (string $ name , Relationship $ relationship )
49
45
{
50
- if ($ this ->isReservedName ($ name )) {
51
- throw new \InvalidArgumentException ("Can not use a reserved name ' $ name' " );
52
- }
53
- if (!$ this ->isValidMemberName ($ name )) {
54
- throw new \OutOfBoundsException ("Not a valid attribute name ' $ name' " );
55
- }
46
+ $ name = (string ) new ReservedName ($ name );
56
47
if (isset ($ this ->attributes [$ name ])) {
57
48
throw new \LogicException ("Field ' $ name' already exists in attributes " );
58
49
}
@@ -61,7 +52,7 @@ public function setRelationship(string $name, Relationship $relationship)
61
52
62
53
public function toIdentifier (): ResourceIdentifier
63
54
{
64
- return new ResourceIdentifier ($ this ->type , $ this ->id );
55
+ return new ResourceIdentifier (( string ) $ this ->type , $ this ->id );
65
56
}
66
57
67
58
public function jsonSerialize ()
@@ -92,14 +83,4 @@ public function identifies(ResourceObject $resource): bool
92
83
}
93
84
return false ;
94
85
}
95
-
96
- private function isReservedName (string $ name ): bool
97
- {
98
- return in_array ($ name , ['id ' , 'type ' ]);
99
- }
100
-
101
- private function isValidMemberName (string $ name ): bool
102
- {
103
- return preg_match ('/^(?=[^-_ ])[a-zA-Z0-9\x{0080}-\x{FFFF}-_ ]*(?<=[^-_ ])$/u ' , $ name ) === 1 ;
104
- }
105
86
}
0 commit comments