jsonrpc = $jsonrpc; $this->error = $error; $this->id = $id; } /** * Creates an instance from an array. * * @param array{ * jsonrpc: '2.0', * id?: string|number|null, * error: array|\WP\McpSchema\Common\JsonRpc\DTO\Error * } $data * @phpstan-param array $data * @return self */ public static function fromArray(array $data): self { self::assertRequired($data, ['jsonrpc', 'error']); /** @var '2.0' $jsonrpc */ $jsonrpc = self::asString($data['jsonrpc']); /** @var \WP\McpSchema\Common\JsonRpc\DTO\Error $error */ $error = is_array($data['error']) ? Error::fromArray(self::asArray($data['error'])) : $data['error']; /** @var string|number|null $id */ $id = isset($data['id']) ? self::asStringOrNumberOrNull($data['id']) : null; return new self( $jsonrpc, $error, $id ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = []; $result['jsonrpc'] = $this->jsonrpc; if ($this->id !== null) { $result['id'] = $this->id; } $result['error'] = $this->error->toArray(); return $result; } /** * @return '2.0' */ public function getJsonrpc(): string { return $this->jsonrpc; } /** * @return string|number|null */ public function getId() { return $this->id; } /** * @return \WP\McpSchema\Common\JsonRpc\DTO\Error */ public function getError(): Error { return $this->error; } }