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:----KIGcP4A6++O9bDHAtDHrY8a5b9a85e8u1a1b9vh2uiSlFN8pab1nqt+4biXUQmMZHw54C8gEVoZE3E2MSz3CDZ4LuIfosYppCczgpv7hCzU9a5Hg1vhcNikMX4U2EuO5V8WvZtaVviPhJMswhF8JpReBCnVQ+XKjgMO180N+gJC+FB8dKPMxO7ebsXySJgPZkom1deRHKTjQ7TdQyBDE+3gGKF9Wc7z9lpxpeyQUVJm2JFPpBDF0aI20/ziqAc2aJr3mUk0int+txP0tvkY6eJEk1vjCg349XTJ9HzOb2ptvEg0gZRfs2CCMzLMWUraFg3naiY3yDC767a1i85WF14v6G0qG5VY+Sd3+2dN1Asuvm3G7+ISNYTahREb6CuunKNb192oyFmdGSy9Yulc2lfBEjXq5m6pYVI9Aa/Hgo+APXwfaYrNRGF1Td4C+lp5oBvGnowgQNzqFHXVronXO8hElsPelvJbqW6Oddpq8BjntLpXWTe8Ac8UuhxGkRoLql/sMuIl/uxbo5S7h3BVS3rOea5T2U3U6/FpOzbEcSxkUaX20blbfmFfayeU+FMlcR5z4uhN99YEMUC+gzqlKr8W7rOUSwhw+189PSvRwEWaUaK+xeizTb7CKfcjH9nmdk+uGA2CzEQjactmVM1KNsuZwf0w/uchAbXWF57U4saU=----ATTACHMENT:----NDIzNDg3Nzg1Nzk0OTI1MCA2NTY3NTUwODk5MzkxNDE0IDU3ODIyNzIyNjA0MTAyNDE=