2
2
3
3
namespace Swaggest \JsonSchema ;
4
4
5
- use Swaggest \JsonSchema \Structure \ClassStructure ;
5
+ use Swaggest \JsonSchema \Constraint \Properties ;
6
+ use Swaggest \JsonSchema \Structure \SchemaStructure ;
6
7
7
- class JsonSchema extends ClassStructure {
8
+
9
+ class JsonSchema extends SchemaStructure {
8
10
/** @var string */
9
11
public $ id ;
10
12
@@ -73,7 +75,7 @@ class JsonSchema extends ClassStructure {
73
75
/** @var JsonSchema[] */
74
76
public $ definitions ;
75
77
76
- /** @var JsonSchema[] */
78
+ /** @var JsonSchema|JsonSchema [] */
77
79
public $ properties ;
78
80
79
81
/** @var JsonSchema[] */
@@ -112,68 +114,69 @@ class JsonSchema extends ClassStructure {
112
114
*/
113
115
public static function setUpProperties ($ properties , Schema $ ownerSchema )
114
116
{
115
- $ properties ->id = Schema ::string ();
116
- $ properties ->schema = Schema ::string ();
117
+ $ properties ->id = JsonSchema ::string ();
118
+ $ properties ->schema = JsonSchema ::string ();
117
119
$ ownerSchema ->addPropertyMapping ('$schema ' , self ::names ()->schema );
118
- $ properties ->title = Schema ::string ();
119
- $ properties ->description = Schema ::string ();
120
+ $ properties ->title = JsonSchema ::string ();
121
+ $ properties ->description = JsonSchema ::string ();
120
122
$ properties ->default = new Schema ();
121
- $ properties ->multipleOf = Schema ::number ();
123
+ $ properties ->multipleOf = JsonSchema ::number ();
122
124
$ properties ->multipleOf ->minimum = 0 ;
123
125
$ properties ->multipleOf ->exclusiveMinimum = true ;
124
- $ properties ->maximum = Schema ::number ();
125
- $ properties ->exclusiveMaximum = Schema ::boolean ();
126
- $ properties ->minimum = Schema ::number ();
127
- $ properties ->exclusiveMinimum = Schema ::boolean ();
128
- $ properties ->maxLength = Schema ::integer ();
126
+ $ properties ->maximum = JsonSchema ::number ();
127
+ $ properties ->exclusiveMaximum = JsonSchema ::boolean ();
128
+ $ properties ->minimum = JsonSchema ::number ();
129
+ $ properties ->exclusiveMinimum = JsonSchema ::boolean ();
130
+ $ properties ->maxLength = JsonSchema ::integer ();
129
131
$ properties ->maxLength ->minimum = 0 ;
130
132
$ properties ->minLength = new Schema ();
131
- $ properties ->minLength ->allOf [0 ] = Schema ::integer ();
133
+ $ properties ->minLength ->allOf [0 ] = JsonSchema ::integer ();
132
134
$ properties ->minLength ->allOf [0 ]->minimum = 0 ;
133
135
$ properties ->minLength ->allOf [1 ] = new Schema ();
134
- $ properties ->pattern = Schema ::string ();
136
+ $ properties ->pattern = JsonSchema ::string ();
135
137
$ properties ->additionalItems = new Schema ();
136
- $ properties ->additionalItems ->anyOf [0 ] = Schema ::boolean ();
138
+ $ properties ->additionalItems ->anyOf [0 ] = JsonSchema ::boolean ();
137
139
$ properties ->additionalItems ->anyOf [1 ] = JsonSchema::schema ();
138
140
$ properties ->items = new Schema ();
139
141
$ properties ->items ->anyOf [0 ] = JsonSchema::schema ();
140
- $ properties ->items ->anyOf [1 ] = Schema ::arr ();
142
+ $ properties ->items ->anyOf [1 ] = JsonSchema ::arr ();
141
143
$ properties ->items ->anyOf [1 ]->items = JsonSchema::schema ();
142
144
$ properties ->items ->anyOf [1 ]->minItems = 1 ;
143
- $ properties ->maxItems = Schema ::integer ();
145
+ $ properties ->maxItems = JsonSchema ::integer ();
144
146
$ properties ->maxItems ->minimum = 0 ;
145
147
$ properties ->minItems = new Schema ();
146
- $ properties ->minItems ->allOf [0 ] = Schema ::integer ();
148
+ $ properties ->minItems ->allOf [0 ] = JsonSchema ::integer ();
147
149
$ properties ->minItems ->allOf [0 ]->minimum = 0 ;
148
150
$ properties ->minItems ->allOf [1 ] = new Schema ();
149
- $ properties ->uniqueItems = Schema ::boolean ();
150
- $ properties ->maxProperties = Schema ::integer ();
151
+ $ properties ->uniqueItems = JsonSchema ::boolean ();
152
+ $ properties ->maxProperties = JsonSchema ::integer ();
151
153
$ properties ->maxProperties ->minimum = 0 ;
152
154
$ properties ->minProperties = new Schema ();
153
- $ properties ->minProperties ->allOf [0 ] = Schema ::integer ();
155
+ $ properties ->minProperties ->allOf [0 ] = JsonSchema ::integer ();
154
156
$ properties ->minProperties ->allOf [0 ]->minimum = 0 ;
155
157
$ properties ->minProperties ->allOf [1 ] = new Schema ();
156
- $ properties ->required = Schema ::arr ();
157
- $ properties ->required ->items = Schema ::string ();
158
+ $ properties ->required = JsonSchema ::arr ();
159
+ $ properties ->required ->items = JsonSchema ::string ();
158
160
$ properties ->required ->uniqueItems = true ;
159
161
$ properties ->required ->minItems = 1 ;
160
162
$ properties ->additionalProperties = new Schema ();
161
- $ properties ->additionalProperties ->anyOf [0 ] = Schema ::boolean ();
163
+ $ properties ->additionalProperties ->anyOf [0 ] = JsonSchema ::boolean ();
162
164
$ properties ->additionalProperties ->anyOf [1 ] = JsonSchema::schema ();
163
- $ properties ->definitions = Schema ::object ();
165
+ $ properties ->definitions = JsonSchema ::object ();
164
166
$ properties ->definitions ->additionalProperties = JsonSchema::schema ();
165
- $ properties ->properties = Schema ::object ();
167
+ $ properties ->properties = JsonSchema ::object ();
166
168
$ properties ->properties ->additionalProperties = JsonSchema::schema ();
167
- $ properties ->patternProperties = Schema ::object ();
169
+ $ properties ->patternProperties = JsonSchema ::object ();
168
170
$ properties ->patternProperties ->additionalProperties = JsonSchema::schema ();
169
- $ properties ->dependencies = Schema::object ();
171
+ $ properties ->dependencies = JsonSchema::object ();
172
+ //$properties->dependencies->additionalProperties = JsonSchema::schema();
170
173
$ properties ->dependencies ->additionalProperties = new Schema ();
171
174
$ properties ->dependencies ->additionalProperties ->anyOf [0 ] = JsonSchema::schema ();
172
- $ properties ->dependencies ->additionalProperties ->anyOf [1 ] = Schema ::arr ();
173
- $ properties ->dependencies ->additionalProperties ->anyOf [1 ]->items = Schema ::string ();
175
+ $ properties ->dependencies ->additionalProperties ->anyOf [1 ] = JsonSchema ::arr ();
176
+ $ properties ->dependencies ->additionalProperties ->anyOf [1 ]->items = JsonSchema ::string ();
174
177
$ properties ->dependencies ->additionalProperties ->anyOf [1 ]->uniqueItems = true ;
175
178
$ properties ->dependencies ->additionalProperties ->anyOf [1 ]->minItems = 1 ;
176
- $ properties ->enum = Schema ::arr ();
179
+ $ properties ->enum = JsonSchema ::arr ();
177
180
$ properties ->enum ->uniqueItems = true ;
178
181
$ properties ->enum ->minItems = 1 ;
179
182
$ properties ->type = new Schema ();
@@ -187,7 +190,7 @@ public static function setUpProperties($properties, Schema $ownerSchema)
187
190
5 => 'object ' ,
188
191
6 => 'string ' ,
189
192
);
190
- $ properties ->type ->anyOf [1 ] = Schema ::arr ();
193
+ $ properties ->type ->anyOf [1 ] = JsonSchema ::arr ();
191
194
$ properties ->type ->anyOf [1 ]->items = new Schema ();
192
195
$ properties ->type ->anyOf [1 ]->items ->enum = array (
193
196
0 => 'array ' ,
@@ -200,16 +203,16 @@ public static function setUpProperties($properties, Schema $ownerSchema)
200
203
);
201
204
$ properties ->type ->anyOf [1 ]->uniqueItems = true ;
202
205
$ properties ->type ->anyOf [1 ]->minItems = 1 ;
203
- $ properties ->format = Schema ::string ();
204
- $ properties ->ref = Schema ::string ();
206
+ $ properties ->format = JsonSchema ::string ();
207
+ $ properties ->ref = JsonSchema ::string ();
205
208
$ ownerSchema ->addPropertyMapping ('$ref ' , self ::names ()->ref );
206
- $ properties ->allOf = Schema ::arr ();
209
+ $ properties ->allOf = JsonSchema ::arr ();
207
210
$ properties ->allOf ->items = JsonSchema::schema ();
208
211
$ properties ->allOf ->minItems = 1 ;
209
- $ properties ->anyOf = Schema ::arr ();
212
+ $ properties ->anyOf = JsonSchema ::arr ();
210
213
$ properties ->anyOf ->items = JsonSchema::schema ();
211
214
$ properties ->anyOf ->minItems = 1 ;
212
- $ properties ->oneOf = Schema ::arr ();
215
+ $ properties ->oneOf = JsonSchema ::arr ();
213
216
$ properties ->oneOf ->items = JsonSchema::schema ();
214
217
$ properties ->oneOf ->minItems = 1 ;
215
218
$ properties ->not = JsonSchema::schema ();
0 commit comments