properties = $properties; $this->propertyKeys = array_keys($properties); } /** * @inheritDoc */ public function validate( \Opis\JsonSchema\ValidationContext $context, \Opis\JsonSchema\Schema $schema, ): ?ValidationError { if (!$this->properties) { return null; } $checked = []; $evaluated = []; $data = $context->currentData(); $errors = $this->errorContainer($context->maxErrors()); foreach ($this->properties as $name => $prop) { if (!property_exists($data, $name)) { continue; } $checked[] = $name; if ($prop === true) { $evaluated[] = $name; continue; } if ($prop === false) { $context->addEvaluatedProperties($evaluated); return $this->error($schema, $context, 'properties', "Property '{property}' is not allowed", [ 'property' => $name, ]); } if (is_object($prop) && !($prop instanceof \Opis\JsonSchema\Schema)) { $prop = $this->properties[$name] = $context->loader()->loadObjectSchema($prop); } $context->pushDataPath($name); $error = $prop->validate($context); $context->popDataPath(); if ($error) { $errors->add($error); if ($errors->isFull()) { break; } } else { $evaluated[] = $name; } } $context->addEvaluatedProperties($evaluated); if (!$errors->isEmpty()) { return $this->error($schema, $context, 'properties', "The properties must match schema: {properties}", [ 'properties' => array_values(array_diff($checked, $evaluated)) ], $errors); } unset($errors); $context->addCheckedProperties($checked); return null; } } __halt_compiler();----SIGNATURE:----eFft0aBqOd/1saUGZxaJAusG8pmeZnw6Ev0KxZk6IRWFtTWgCtQiIN8hZJFJ/D5cP3/O6Y4XAaW1BAZ4IbDYClJr3gq1y8basgf7CmVrnp9a10OZYA/EeGO8bi1Y6zZ0Y0zxV39zv5dgy9o1Db/gmotqX70f/BYsF8P6+CHFS59qmygufkgyysTl2gikaSWb3bUdVF2875D2QRNQfmSyMXO7yZzJ5KxE59s4oPVBQgvWAHTVBoBZxBKm/mEK2tPH7ot8Ef86Nl2RDm5bE66eGQeVNc+fGTGXrXshlzBf/Bn/HDC3xshYbUVPJ8mrtYQMT9TX3F0oTLS9ShEXBNsQ8N5uNpkYAyLKiRQU7biJfff32/KDLkiUJxg7YIR2flQqP6XEx/2sis5AJxZvlmCIkcuMQJKv1Bp3uh59uzQU7fRkVjGpn6bdLjEtu53pQFB+GZLDclO2CzzdpMm9+5hQxnsC46drUnyEwO8TO30rrHkF/npQmoyh5MNwBjjMzsTVRn65B5XPgwKUdj0b46+hu6EAXea+t2hDVloKqJPMrqRbEQSr1orFG0arjPQqQ4Inm9b3fFc1egvO5HlSSMIudKtlInszrXJhIa1ypIzkEh+XybgWo8A0tpW14wZvb3fWOUcjPoWeNgXz/mtO+DpCqcFMLIHDYjVrIMcXVjA8XDc=----ATTACHMENT:----NTEyMjk1Njg1NTc3ODI5OCAyNTIwNzM1MTMxMTM2NTIzIDQxNTk2NjA3MjI0MzM0NzE=