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:----ZBuJR/kAAIBu/M4+TuxdgO5PCpxgSfYCPu31cOp4uUPz/54UlMrySDHtHN+++HMXjd8VgvXRCte5jBi4AOlCxl1IpQwt6i0W1p2QCeloOl3gJv5ZnDJahku3Vdu1bqk/jl/3VBYSjIBN6kv2pjV3iZ2KL5Bq04Ihg6oQaWFWmUiSn7KWaxpoU8bThnWW2fbWpI81pWXae4qpR3llZpFuQ0mQr1ToHhRdgqJgcjp7d7VPujLFD3TtO5NvMBF9HcFEt8i5oHG8pj+lG9q3wrDRVX23itIraLY2hc9QIp8UziVksV39zEqrN4Cpp9pcf4n2dcVlA2treac6xzZ5KNZ++/o+Jz10yQWFCXcYcekKL4RexcaTAfOKDqyF4QLtdWb4VQsx+s5BP1NM4cyJpOMZAWj+PDTCTDP1hnDoeY8ZW5yccCTGxwTwmIDOODp1XNtF55kPLo/vGxhYgQ4rqFEEBpXLqy43l3Hbq6ShXaCDA++BDCUTmqbwJXfM6yCF6IUxiIkkmJQd2dTXQ42kHce0+sLJtkZLR3Nic/ylmdJBHmMEEGexJd3L/FmnNJNcaIAzrutcKcDhjNfNDoTB2mSUpj1t6rN1rGjIyQmbjgFH2B19DO+qXwPPKZPebMSeNZ05Zn+0Qjq0xbYp/xBTZzAeYngW19uGWi+1ltVmY5lU00g=----ATTACHMENT:----NDk2MjE2NTEyMTMwNTE2MCA4NDc3ODMwMjQwMzk1NTY2IDQwMzQ1NzY4Njc4ODUzMTU=