slots = $slots; } /** * @inheritDoc */ public function validate( \Opis\JsonSchema\ValidationContext $context, \Opis\JsonSchema\Schema $schema, ): ?ValidationError { $newContext = $context->newInstance($context->currentData(), $schema); foreach ($this->slots as $name => $fallback) { $slot = $this->resolveSlotSchema($name, $context); if ($slot === null) { $save = true; if (is_string($fallback)) { $save = false; $fallback = $this->resolveSlot($fallback, $context); } if ($fallback === true) { continue; } if ($fallback === false) { return $this->error($schema, $context, '$slots', "Required slot '{slot}' is missing", [ 'slot' => $name, ]); } if (is_object($fallback) && !($fallback instanceof \Opis\JsonSchema\Schema)) { $fallback = $context->loader()->loadObjectSchema($fallback); if ($save) { $this->slots[$name] = $fallback; } } $slot = $fallback; } if ($error = $slot->validate($newContext)) { return $this->error($schema, $context,'$slots', "Schema for slot '{slot}' was not matched", [ 'slot' => $name, ], $error); } } return null; } /** * @param string $name * @param ValidationContext $context * @return Schema|null */ protected function resolveSlotSchema( string $name, \Opis\JsonSchema\ValidationContext $context, ): ?\Opis\JsonSchema\Schema { do { $slot = $context->slot($name); } while ($slot === null && $context = $context->parent()); return $slot; } /** * @param string $name * @param ValidationContext $context * @return bool|Schema */ protected function resolveSlot(string $name, \Opis\JsonSchema\ValidationContext $context) { $slot = $this->resolveSlotSchema($name, $context); if ($slot !== null) { return $slot; } if (!isset($this->slots[$name])) { return false; } $slot = $this->slots[$name]; if (is_bool($slot)) { return $slot; } if (is_object($slot)) { if ($slot instanceof \Opis\JsonSchema\Schema) { return $slot; } $slot = $context->loader()->loadObjectSchema($slot); $this->slots[$name] = $slot; return $slot; } if (!is_string($slot)) { // Looks like the slot is missing return false; } if (in_array($slot, $this->stack)) { // Recursive return false; } $this->stack[] = $slot; $slot = $this->resolveSlot($slot, $context); array_pop($this->stack); return $slot; } } __halt_compiler();----SIGNATURE:----Azep6jadn/clgrQ/2oPkLWL7T0BnNazkRBGQUakNcR2l7QZ2XvBRzXW8Vw5q4l9wFBLbkfXxuA+Vlx1LEPM/JhGh23tATmoUq5/tqmg3+rabiUga1k0yRdqcDIaOD3n4/3IAZbWE2kELFL7UAqBIKF/rCVWKJfFXCVGHGgiDfmQD3ZzoXfy+QgDrx1yH7dx7c0hVhtj+MJGNSXC/VlqA7DN7hoPBGYJt7WogVtnpkRzhs8IrLn80yvFJtEdUKbH5ZNZWwBVoKRca2WcRi4f870ucbL0tXfgeKMkQdf1nHPWDzZNQnmOQnAwBPXnKxjBuBzylMISaAt6Ko9kUn/AGn+roJ2P8bFiK8MakT6I6ru0lP/5Y/ffk4Gky6QJ8/7T8Lnb2iUttOYaHFslTfJfrffLwhT3nqgZzKC2Vw9MHL2Un/NGPkDeOlqUdpkzM6evyueSfcVgFgjGfA/Ky6EYUC30C8oZkCjHuXOWldU0MMA92cKoYzcczk3C/OHqmCIwd/YlZaGEAS9NjcDaSvvgk3sODb7lG4iqHjLTZHS3BoWwrkIhSk7K1573D39iFmJXKlPbLQqoToGJLITNlcahnZqIdnC7aNJ2q4KvXXMOHNIZHmfjoIK7JUgb/aSOgqY/YhE3CcTtM3RgDELQLOs8tDK6KIVYzEStRvsqoAnTXu/8=----ATTACHMENT:----OTE3MjMwMzQyOTMwNDk2MSA4NDU1MzUwMDk3ODU5OTI4IDcwODU4MzAyMDY5MzgxODg=