-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathJugglingModelInterface.php
224 lines (199 loc) · 4.56 KB
/
JugglingModelInterface.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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<?php
namespace Esensi\Model\Contracts;
/**
* Juggling Model Interface.
*
*/
interface JugglingModelInterface
{
/**
* Get the juggable attributes.
*
* @return array
*/
public function getJugglable();
/**
* Set the jugglable attributes.
*
* @param array $attributes to juggle
*
* @throws InvalidArgumentException
*/
public function setJugglable(array $attributes);
/**
* Add an attribute to the jugglable array.
*
* @param string $attribute
* @param string $type
*
* @throws InvalidArgumentException
*/
public function addJugglable($attribute, $type);
/**
* Remove an attribute or several attributes from the jugglable array.
*
* @example removeJugglable( string $attribute, ... )
*
* @param mixed $attributes
*/
public function removeJugglable($attributes);
/**
* Merge an array of attributes with the jugglable array.
*
* @param array $attributes to juggle
*
* @throws InvalidArgumentException
*/
public function mergeJugglable(array $attributes);
/**
* Returns whether or not the model will juggle attributes.
*
* @return bool
*/
public function getJuggling();
/**
* Set whether or not the model will juggle attributes.
*
* @param bool
*/
public function setJuggling($value);
/**
* Returns whether the attribute is type jugglable.
*
* @param string $attribute name
*
* @return bool
*/
public function isJugglable($attribute);
/**
* Returns whether the type is a type that can be juggled to.
*
* @param string $type to cast
*
* @return bool
*/
public function isJuggleType($type);
/**
* Checks whether the type is a type that can be juggled to.
*
* @param string $type to cast
*
* @throws InvalidArgumentException
*
* @return bool
*/
public function checkJuggleType($type);
/**
* Build the method name that the type normalizes to.
*
* @param string $type to cast
*
* @return string
*/
public function buildJuggleMethod($type);
/**
* Gets the type that the attribute will be casted to.
*
* @param string $attribute
*
* @return string
*/
public function getJuggleType($attribute);
/**
* Juggles all attributes that are configured to be juggled.
*/
public function juggleAttributes();
/**
* Casts a value to the coresponding attribute type and sets
* it on the attributes array of this model.
*
* @param string $attribute
* @param string $value
*/
public function juggleAttribute($attribute, $value);
/**
* Cast the value to the attribute's type as specified in the juggable array.
*
* @param mixed $value
* @param string $type
*
* @throws InvalidArgumentException
*
* @return mixed
*/
public function juggle($value, $type);
/**
* Returns the value as a Carbon instance.
*
* @param mixed $value
*
* @return Carbon\Carbon
*
* @see Illuminate\Database\Eloquent\Model::asDateTime()
*/
public function juggleDate($value);
/**
* Returns a string formated as ISO standard of 0000-00-00 00:00:00.
*
* @param mixed $value
*
* @return string
*/
public function juggleDateTime($value);
/**
* Returns the date as a Unix timestamp.
*
* @param mixed $value
*
* @return int
*/
public function juggleTimestamp($value);
/**
* Returns the value as a boolean.
*
* @param mixed $value
*
* @return bool
*/
public function juggleBoolean($value);
/**
* Returns the value as an integer.
*
* @param mixed $value
*
* @return int
*/
public function juggleInteger($value);
/**
* Returns the value as a float.
*
* @param mixed $value
*
* @return float
*/
public function juggleFloat($value);
/**
* Returns the value as a string.
*
* @param mixed $value
*
* @return string
*/
public function juggleString($value);
/**
* Returns the value as an array.
*
* @param mixed $value
*
* @return array
*/
public function juggleArray($value);
/**
* Casts to null on empty.
*
* @param mixed $value
*
* @return mixed|null
*/
public function juggleNull($value);
}