geno/wp-content/plugins/mailpoet/lib/Validator/Schema/ObjectSchema.php
2024-02-01 11:54:18 +00:00

56 lines
1.7 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Validator\Schema;
if (!defined('ABSPATH')) exit;
use MailPoet\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#objects
class ObjectSchema extends Schema {
protected $schema = [
'type' => 'object',
];
/** @param array<string, Schema> $properties */
public function properties(array $properties): self {
return $this->updateSchemaProperty('properties', array_map(
function (Schema $property) {
return $property->toArray();
},
$properties
));
}
public function additionalProperties(Schema $schema): self {
return $this->updateSchemaProperty('additionalProperties', $schema->toArray());
}
public function disableAdditionalProperties(): self {
return $this->updateSchemaProperty('additionalProperties', false);
}
/**
* Keys of $properties are regular expressions without leading/trailing delimiters.
* See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#patternproperties
*
* @param array<string, Schema> $properties
*/
public function patternProperties(array $properties): self {
$patternProperties = [];
foreach ($properties as $key => $value) {
$this->validatePattern($key);
$patternProperties[$key] = $value->toArray();
}
return $this->updateSchemaProperty('patternProperties', $patternProperties);
}
public function minProperties(int $value): self {
return $this->updateSchemaProperty('minProperties', $value);
}
public function maxProperties(int $value): self {
return $this->updateSchemaProperty('maxProperties', $value);
}
}