src\Url.php

Реализуйте абстракцию для работы с урлами. Она должна извлекать и менять части адреса. Интерфейс:

  • make($url) - Конструктор. Создает урл.
  • setScheme($data, $scheme) - Сеттер. Меняет схему.
  • getScheme($data) - Селектор (геттер). Извлекает схему.
  • setHost($data, $host) - Сеттер. Меняет хост.
  • getHost($data) - Геттер. Извлекает хост.
  • setPath($data, $path) - Сеттер. Меняет строку запроса.
  • getPath($data) - Геттер. Извлекает строку запроса.
  • setQueryParam($data, $key, $value) - Сеттер. Устанавливает значение для параметра запроса.
  • getQueryParam($data, $paramName, $default = null) - Геттер. Извлекает значение для параметра запроса. Третьим параметром функция принимает значение по умолчанию, которое возвращается тогда, когда в запросе не было такого параметра
  • toString($data) - Геттер. Преобразует урл в строковой вид.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

$url = Url\make('https://hexlet.io/community?q=low');

$url = Url\setScheme($url, 'http');
Url\toString($url); // 'http://hexlet.io/community?q=low'

$url = Url\setPath($url, '/404');
Url\toString($url); // 'http://hexlet.io/404?q=low'

$url = Url\setQueryParam($url, 'page', 5);
Url\toString($url); // 'http://hexlet.io/404?q=low&page=5'

$url = Url\setQueryParam($url, 'q', 'high');
Url\toString($url); // 'http://hexlet.io/404?q=high&page=5'

$url = Url\setQueryParam($url, 'q', null);
Url\toString($url); // 'http://hexlet.io/404?page=5'

Подсказки

  • Парсинг урла - parse_url
  • Парсинг параметров запроса - parse_str
  • Формирование строки запроса - http_build_query
  • Собирать данные в url придется самостоятельно
Успешных завершений: 85%

Последние код-ревью

Автор Дата обновления Версий
bunkua 26 нояб., 18:42 1
undefined 17 нояб., 21:33 1
incraft 14 нояб., 10:42 2
mihey3000 10 нояб., 16:19 1
chernuy_ 06 нояб., 21:16 1