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