|null */ protected ?array $properties; /** * @var array|null */ protected ?array $required; /** * @param string|null $schema * @param array|null $properties * @param array|null $required */ public function __construct( ?string $schema = null, ?array $properties = null, ?array $required = null ) { $this->type = self::TYPE; $this->schema = $schema; $this->properties = $properties; $this->required = $required; } /** * Creates an instance from an array. * * @param array{ * '$schema'?: string|null, * type: 'object', * properties?: array|null, * required?: array|null * } $data * @phpstan-param array $data * @return self */ public static function fromArray(array $data): self { return new self( self::asStringOrNull($data['$schema'] ?? null), self::asObjectMapOrNull($data['properties'] ?? null), self::asStringArrayOrNull($data['required'] ?? null) ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = []; if ($this->schema !== null) { $result['$schema'] = $this->schema; } $result['type'] = $this->type; if ($this->properties !== null) { $result['properties'] = $this->properties; } if ($this->required !== null) { $result['required'] = $this->required; } return $result; } /** * @return string|null */ public function getSchema(): ?string { return $this->schema; } /** * @return 'object' */ public function getType(): string { return $this->type; } /** * @return array|null */ public function getProperties(): ?array { return $this->properties; } /** * @return array|null */ public function getRequired(): ?array { return $this->required; } }