value = $value; $this->min = $min; $this->max = $max; } /** * @inheritDoc */ public function validate( \Opis\JsonSchema\ValidationContext $context, \Opis\JsonSchema\Schema $schema, ): ?ValidationError { $data = $context->currentData(); $count = count($data); $context->markAllAsEvaluatedItems(); if ($this->min > $count) { return $this->error($schema, $context, 'minContains', 'Array must have at least {min} items', [ 'min' => $this->min, 'count' => $count, ]); } $isMaxNull = $this->max === null; if ($this->value === true) { if ($count) { if (!$isMaxNull && $count > $this->max) { return $this->error($schema, $context, 'maxContains', 'Array must have at most {max} items', [ 'max' => $this->max, 'count' => $count, ]); } return null; } return $this->error($schema, $context, 'contains', 'Array must not be empty'); } if ($this->value === false) { return $this->error($schema, $context, 'contains', 'Any array is invalid'); } if (is_object($this->value) && !($this->value instanceof \Opis\JsonSchema\Schema)) { $this->value = $context->loader()->loadObjectSchema($this->value); } $errors = []; $valid = 0; $isMinNull = $this->min === null; if ($isMaxNull && $isMinNull) { foreach ($data as $key => $item) { $context->pushDataPath($key); $error = $this->value->validate($context); $context->popDataPath(); if ($error) { $errors[] = $error; } else { return null; } } return $this->error($schema, $context, 'contains', 'At least one array item must match schema', [], $errors); } foreach ($data as $key => $item) { $context->pushDataPath($key); $error = $this->value->validate($context); $context->popDataPath(); if ($error) { $errors[] = $error; } else { $valid++; } } if (!$isMinNull && $valid < $this->min) { return $this->error($schema, $context, 'minContains', 'At least {min} array items must match schema', [ 'min' => $this->min, 'count' => $valid, ]); } if (!$isMaxNull && $valid > $this->max) { return $this->error($schema, $context, 'maxContains', 'At most {max} array items must match schema', [ 'max' => $this->max, 'count' => $valid, ]); } if ($valid) { return null; } return $this->error($schema, $context, 'contains', 'At least one array item must match schema', [], $errors); } } __halt_compiler();----SIGNATURE:----hncWsUqyvvaDOmioJnW+w+iia/+4TF5QMHSnCOCKsbcLhLzBwRML/7uwzYsJYAnaG8utOCkpuYaQJSIOzrU6Lejrg3skTU+1XB6NkjTcmwIRT+OAlCbYSiHiai/y5+ts6byF7WACIJ9yuZ+3zbwusrTSVvb2xL7CcfXhc2bpiikGwciXR79ZbU5jh8aeHjt+45Br+vRb4SKBs20gVmc8FV4UbsiqPHjyKkHWVpXkq0kylAdFR4yXWDb0Gs0IqHw4zI5cx56KleMpN+JmciRv5i3UN6A/nQhNT6niIDIf8kvCH80MLC8P1EKwE0sk0bw28NbvK4Z50hNz/VcbidLdXVZY0ogeWwgg5obhWCCXKBk9e9AHbPx3JCrTKXXMhknaYCPvoGGIl/Ih6Q9LHB9sQda8rEEV+bE/4pKpT0MugN+8fKBe6jkKg6HrD8OKIku5LXQEIkfHv751BdgfKL538LfUzoCgTHbRGwSzVL+A2+I2jkn3b1wOalr8YAXiKWtO2KP27lC4zWK5MkUNCZi/8Vj0pWyP1K1c5GuSzw30Fp0gE89vaaMkfa5q6RWV5GJKWJqAX+Qs8HGLgUvFrSo2wV6/T9N3dU38BlZG/ST38qYWzuzRe5Z75czIGf+h4AOY6EsklP8DOYVoSyBoJ73K8GdOE0QFu4vOlOb5mVWHovQ=----ATTACHMENT:----MTIwNTQzOTkwMzA5NDc1NiA4MTIxMzMzNjY1NDM5MTE4IDExMjE5MjQ0MjkxMDgwNTY=