<?php
function build_external_url(string $host, string $path = null, array $query = [], string $schema = null, int $port = null): string
{
$url = $host;
if (null !== $port) {
$url .= ':' . $port;
}
if (null !== $path) {
$url .= '/' . ltrim($path, '/');
}
if (! empty($query)) {
$url .= '?' . http_build_query($query);
}
return (null === $schema ? $url : ($schema . '://' . $url));
}
$tests = [
[ 'foo.co' ],
[ 'foo.co', '/bar' ],
[ 'foo.co', 'bar', [ 'x' => 'baz' ]],
[ 'foo.co', 'bar', [], 'ftp' ],
[ 'foo.co', 'bar', ['email' => 'me@foo.co'], 'ftp', '24225'],
];
foreach ($tests as $args) {
echo build_external_url(...$args) . PHP_EOL;
}
preferences:
25.86 ms | 405 KiB | 5 Q