WSUrl

Внимание! Этот API устарел начиная с WS 0.89.

WSUrl является устаревшим классом и не должен использоваться в новом коде.

Единой полной замены у класса нет:

  • для URL текущего запроса используйте CurrentUrl
  • для разбора произвольного URL используйте нативные функции PHP

URL текущего запроса

CurrentUrl предоставляет уже разобранные данные текущего HTTP-запроса:

php
$url = CurrentUrl::url();
$host = CurrentUrl::host();
$path = CurrentUrl::path();
$segment = CurrentUrl::segment(0);
$parameter = CurrentUrl::parameter('page');

CurrentUrl учитывает обычные и AJAX-запросы WebSource, но не принимает произвольный URL для разбора.

Произвольный URL

Для произвольного URL используйте parse_url():

php
$url = 'https://example.com/catalog/item?page=2';
$parts = parse_url($url);

if ($parts === false) {
    return;
}

$scheme = (string) ($parts['scheme'] ?? '');
$host = (string) ($parts['host'] ?? '');
$path = trim((string) ($parts['path'] ?? ''), '/');

Query-строку можно разобрать через parse_str():

php
$parameters = [];

parse_str(
    (string) ($parts['query'] ?? ''),
    $parameters
);

$page = $parameters['page'] ?? null;

parse_url() выполняет разбор, но не подтверждает безопасность или допустимость внешнего URL. Проверяйте входные данные отдельно.

Сохранённый API

Класс остаётся доступным для поддержки старого кода.

Метод Назначение
host() Возвращает хост.
scheme() Возвращает схему.
fullHost() Возвращает схему и хост.
url() Возвращает сформированный URL.
path() Возвращает путь.
fullPath() Возвращает URL без query-строки.
query() Возвращает query-строку.
getParameter() Возвращает обработанный query-параметр.
getOriginalParameter() Возвращает исходный query-параметр.
getPathPart() Возвращает сегмент пути.
getPostType() Возвращает путь без последнего сегмента.
getPageUrl() Возвращает последний сегмент пути.
getBaseUrl() Возвращает путь URL.

Ограничения legacy API

  • конструктор ожидает абсолютный URL со схемой и хостом
  • неполный или некорректный URL может вызвать предупреждение PHP
  • весь URL декодируется до вызова parse_url()
  • путь приводится к нижнему регистру
  • query-строка разбирается простым разделением по & и =
  • массивы и сложные query-параметры не поддерживаются
  • отсутствующий параметр в getOriginalParameter() вызывает предупреждение
  • порт URL не сохраняется при повторном формировании адреса
  • getOriginalParameter() возвращает значение без дополнительной обработки
  • для нового кода используйте CurrentUrl или нативные функции PHP