data = $data; } /** * Get an argument type (function name). */ public function getType(): ?string { if (!is_object($this->data)) { return null; } if (!property_exists($this->data, 'type')) { return null; } return $this->data->type ?? null; } /** * Get a nested argument list. * @throws Error */ public function getArgumentList(): ArgumentList { if (!is_object($this->data)) { throw new Error("Can't get an argument list from a scalar value item."); } if (!property_exists($this->data, 'value')) { $argumentList = new ArgumentList([]); } else if (is_array($this->data->value)) { $argumentList = new ArgumentList($this->data->value); } else { $argumentList = new ArgumentList([$this->data->value]); } return $argumentList; } /** * Get RAW data. * * @return mixed */ public function getData() { return $this->data; } }