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