data = $data; $this->parse(); } /** * @throws Exception */ private function parse(): void { $this->name = $this->data['name']; $this->description = $this->data['description']; // 如果 parameters 不为空,则验证 if (! empty($this->data['parameters'])) { // 检查 type 是否为 object if ($this->data['parameters']['type'] !== 'object') { throw new Exception('parameters type must be object'); } if (! isset($this->data['parameters']['properties'])) { throw new Exception('parameters must have properties'); } // 循环检查 properties 下的 key 的值,必须有 type 和 description foreach ($this->data['parameters']['properties'] as $key => $value) { if (! isset($value['type'])) { throw new Exception('parameters properties must have type'); } if (! isset($value['description'])) { throw new Exception('parameters properties must have description'); } } } $this->parameters = $this->data['parameters']; $this->required = $this->data['required'] ?? []; } }