value = $value; $this->alwaysValid = $alwaysValid; if (is_array($value)) { $this->count = count($value); } $this->keyword = $keyword; $this->startIndex = $startIndex; } /** * @inheritDoc */ public function validate( \Opis\JsonSchema\ValidationContext $context, \Opis\JsonSchema\Schema $schema, ): ?ValidationError { if ($this->alwaysValid || $this->value === true) { if ($this->count === -1) { $context->markAllAsEvaluatedItems(); } else { $context->markCountAsEvaluatedItems($this->count); } return null; } $count = count($context->currentData()); if ($this->startIndex >= $count) { // Already validated by other keyword return null; } if ($this->value === false) { if ($count === 0) { return null; } return $this->error($schema, $context, $this->keyword, 'Array must be empty'); } if ($this->count >= 0) { $errors = $this->errorContainer($context->maxErrors()); $max = min($count, $this->count); $evaluated = []; for ($i = $this->startIndex; $i < $max; $i++) { if ($this->value[$i] === true) { $evaluated[] = $i; continue; } if ($this->value[$i] === false) { $context->addEvaluatedItems($evaluated); return $this->error($schema, $context, $this->keyword, "Array item at index {index} is not allowed", [ 'index' => $i, ]); } if (is_object($this->value[$i]) && !($this->value[$i] instanceof \Opis\JsonSchema\Schema)) { $this->value[$i] = $context->loader()->loadObjectSchema($this->value[$i]); } $context->pushDataPath($i); $error = $this->value[$i]->validate($context); $context->popDataPath(); if ($error) { $errors->add($error); if ($errors->isFull()) { break; } } else { $evaluated[] = $i; } } $context->addEvaluatedItems($evaluated); if ($errors->isEmpty()) { return null; } return $this->error($schema, $context, $this->keyword, 'Array items must match corresponding schemas', [], $errors); } if (is_object($this->value) && !($this->value instanceof \Opis\JsonSchema\Schema)) { $this->value = $context->loader()->loadObjectSchema($this->value); } $object = $this->createArrayObject($context); $error = $this->validateIterableData($schema, $this->value, $context, $this->indexes($this->startIndex, $count), $this->keyword, 'All array items must match schema', [], $object); if ($object && $object->count()) { $context->addEvaluatedItems($object->getArrayCopy()); } return $error; } /** * @param int $start * @param int $max * @return iterable|int[] */ protected function indexes(int $start, int $max): iterable { for ($i = $start; $i < $max; $i++) { yield $i; } } } __halt_compiler();----SIGNATURE:----KL5AFue8sGT6PRqIdtxlgYaiXWINyZheV137vKOuS4+dhhSt96LEdw4les71TNHRjaSQgOV82s0u5JM0PQt8gAp+AgH7T3lbsnhsjEhQ2Z8X31a6S44Mz9FsPwGjW0VyPlH3mgGzXFWNJfH3MCls04LSNUSAqgLGGAXx4IR7QhvZEjFrWL57IrSomJLJDngaimOuHabfzCeZzQ8GjyO9r2TDdkL5ymZzSRpFnqKp7orOmgE9C5f5k4OhCNBtfVDpoLg1sPP0MkEQyUDjU87ZNuK5ykofGra9Sv4oYZjkzXprx7OVvPU/LuGYRO2VgSswHeGnFA/wkDWZHdvKtZLxPWpmaZoXx2C1YKvJIFik0J7F12jwsRnJew1GtFPNRm4mfmLBaMXoFrRNv6DGDa/sXXiBC/mpGSOgfqDCLsM/13JnrJtQgKk4rZ7l5yZ//YeG1f+TyGqu9QD6CEAzxKa9PFaG5SRjxY6UZwdK2tlCbrEZOv/wMPNqIFFzVcLXoSgFOatlqR6OIBu0XjYV2AvzAgctjkqk/IdDM30S/iTIpGmrNyjEl9/Et4/cdNOL522u7ELBhHbEHInr+Q3ChZUrIQJKjSvWJmafr02C+tE52tgbcx2gGK/uro4rL3i2VtnEacbL/wP/ZASqUlFviWq+uhBLGUIhbCpAz+gXN/DHvl8=----ATTACHMENT:----NDcwNDI5MjkzMjk1Mzk0MSA4MTAzMTcwMzI5Nzc2MjQzIDMwMzQ0Mzk2ODA1Mjg4OTI=