-
Notifications
You must be signed in to change notification settings - Fork 1
/
Contract.php
138 lines (116 loc) · 2.85 KB
/
Contract.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
namespace RJP\ApiBundle;
use Symfony\Component\Validator;
use JMS\DiExtraBundle\Annotation\Inject;
use JMS\Serializer\Annotation as Serializer;
class Contract
{
/**
* @Serializer\Exclude
*/
public $validator;
/**
* @Serializer\XmlKeyValuePairs
* @Serializer\Type("array")
* @Serializer\Groups({"Links"})
*/
public $_links;
/**
* @Serializer\XmlKeyValuePairs
* @Serializer\Type("array")
* @Serializer\Groups({"Embedded"})
*/
public $_embedded;
public function __get($name)
{
return @$this->$name;
}
public function __construct()
{
}
/**
* @param mixed $embedded
*/
public function setEmbedded($embedded)
{
$this->_embedded = $embedded;
}
/**
* @return mixed
*/
public function getEmbedded()
{
return $this->_embedded;
}
/**
* @param mixed $links
*/
public function setLinks($links)
{
$this->_links = $links;
}
/**
* @return mixed
*/
public function getLinks()
{
return $this->_links;
}
/**
* @param mixed $validator
*/
public function setValidator($validator)
{
$this->validator = $validator;
}
/**
* @return mixed
*/
public function getValidator()
{
return $this->validator;
}
public function validate()
{
return $this->validator->validate($this);
}
public function unsetProperty($property)
{
unset($this->$property);
}
public function getArray(&$arrayObject = null)
{
foreach ($this as $property => $value)
{
if (method_exists($this, 'get'.ucfirst($property)))
{
$propertyValue = $this->{'get'.ucfirst($property)}();
if (is_array($propertyValue) && isset($propertyValue[0]) && method_exists($propertyValue[0], 'getArray'))
{
foreach ($propertyValue as $arrayKey => &$arrayValue)
{
$arrayObject[$property][$arrayKey] = $arrayValue->getArray($arrayObject[$property][$arrayKey]);
}
}
else if (is_object($propertyValue) && $propertyValue instanceof Contract)
{
$arrayObject[$property] = $propertyValue->getArray($arrayObject[$property]);
}
else if (!is_object($propertyValue) && $property != 'validator')
{
$arrayObject[$property] = $propertyValue;
}
}
}
return $arrayObject;
}
public function getProperties()
{
$properties = array();
foreach ($this as $key => $value)
{
$properties[] = $key;
}
return $properties;
}
}