*/ private const KNOWN_KEYS = ['nextCursor', '_meta', 'resourceTemplates']; /** * @since 2024-11-05 * * @var array<\WP\McpSchema\Server\Resources\DTO\ResourceTemplate> */ protected array $resourceTemplates; /** * @param array<\WP\McpSchema\Server\Resources\DTO\ResourceTemplate> $resourceTemplates @since 2024-11-05 * @param string|null $nextCursor @since 2024-11-05 * @param array|null $_meta @since 2024-11-05 * @param array|null $additionalProperties */ public function __construct( array $resourceTemplates, ?string $nextCursor = null, ?array $_meta = null, ?array $additionalProperties = null ) { parent::__construct($_meta, $nextCursor, $additionalProperties); $this->resourceTemplates = $resourceTemplates; } /** * Creates an instance from an array. * * @param array{ * nextCursor?: string|null, * _meta?: array|null, * resourceTemplates: array|\WP\McpSchema\Server\Resources\DTO\ResourceTemplate> * } $data * @phpstan-param array $data * @return self */ public static function fromArray(array $data): self { self::assertRequired($data, ['resourceTemplates']); /** @var array<\WP\McpSchema\Server\Resources\DTO\ResourceTemplate> $resourceTemplates */ $resourceTemplates = array_map( static fn($item) => is_array($item) ? ResourceTemplate::fromArray($item) : $item, self::asArray($data['resourceTemplates']) ); return new self( $resourceTemplates, self::asStringOrNull($data['nextCursor'] ?? null), self::asArrayOrNull($data['_meta'] ?? null), self::additionalFields($data, self::KNOWN_KEYS) ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = parent::toArray(); $result['resourceTemplates'] = array_map(static fn($item) => $item->toArray(), $this->resourceTemplates); return $result; } /** * @return array<\WP\McpSchema\Server\Resources\DTO\ResourceTemplate> */ public function getResourceTemplates(): array { return $this->resourceTemplates; } }