31 lines
No EOL
644 B
PHP
31 lines
No EOL
644 B
PHP
<?php
|
|
|
|
namespace ctiso;
|
|
|
|
class Url {
|
|
/** @var array<string, string> */
|
|
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 : []));
|
|
}
|
|
} |