*/ public array $parts = []; public ?Url $parent; /** * @param Url|null $parent */ function setParent($parent): void { $this->parent = $parent; } /** * @param string[] $parts */ function setQuery(array $parts): void { $this->parts = $parts; } function addQueryParam(string $key, ?string $value): void { $this->parts[$key] = $value; } function toString(): string { return '?' . http_build_query(array_merge($this->parts, $this->parent ? $this->parent->parts : [])); } }