originalInput = $params; $params += [ 'query' => null, 'queryid' => null, 'documentid' => null, // alias to queryid 'id' => null, // alias to queryid 'operationname' => null, 'variables' => null, 'extensions' => null, ]; if ($params['variables'] === '') { $params['variables'] = null; } if (is_string($params['variables'])) { $tmp = json_decode($params['variables'], true); if (! json_last_error()) { $params['variables'] = $tmp; } } $instance->query = $params['query']; $instance->queryId = $params['queryid'] ?: $params['documentid'] ?: $params['id']; $instance->operation = $params['operationname']; $instance->variables = $params['variables']; $instance->extensions = $params['extensions']; $instance->readOnly = (bool) $readonly; // Apollo server/client compatibility: look for the queryid in extensions if (isset($instance->extensions['persistedQuery']['sha256Hash']) && empty($instance->query) && empty($instance->queryId)) { $instance->queryId = $instance->extensions['persistedQuery']['sha256Hash']; } return $instance; } /** * @param string $key * * @return mixed * * @api */ public function getOriginalInput($key) { return $this->originalInput[$key] ?? null; } /** * Indicates that operation is executed in read-only context * (e.g. via HTTP GET request) * * @return bool * * @api */ public function isReadOnly() { return $this->readOnly; } }