sqrt-pro / url
SQRT.pro URL is part of SQRT Framework
Installs: 1 428
Dependents: 3
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 0
Open Issues: 0
pkg:composer/sqrt-pro/url
Requires
- php: >=5.3.0
 - sqrt-pro/helpers: dev-master
 - sqrt-pro/tag: dev-master
 - true/punycode: ~1.0
 
This package is not auto-updated.
Last update: 2025-11-04 08:26:39 UTC
README
Терминология
Часть URL разделенная символом / называется аргумент. Например: /my/cool/page/. При этом важен порядок следования
аргументов, т.к. адресация идет по номеру, начиная с 1. Т.е. после разбора примера выше, будет получен такой набор
аргументов:
1 => 'my'
2 => 'cool'
3 => 'page'
Если нужно передать именованный параметр, он передается в виде "имя:значение", например: /id:12/height:yahoo/.
При этом последовательность параметров не имеет значения. Аргументы и параметры можно комбинировать, но параметры
всегда идут в конце URL. Например: /my/pretty/what:page/what:site/.
Если указывается несколько значений с одинаковым именем, они трактуются как массив. Например: /id:10/id:11/id:12/.
Кроме этого, можно использовать "имя файла", например /hello/world.txt. Оно связано с атрибутами, но не входит в их
список.
Разбор URL
Всё начинается с создания объекта URL. Разбор адреса происходит при вызове parse(), в качестве аргументов можно
передать строку (полный или абсолютный путь) или массив(будет обработан как набор параметров).
Аналогично можно передавать параметры в конструктор, допускается указывать несколько объектов как аргументы.
Следующие вызовы идентичны по результату:
$u = new URL();
$u->parse('/my/page/id:12/hello:world/');
$u = new URL('/my/page/id:12/hello:world/'); 
$u = new URL('my/page', array('id'=>12, 'hello'=>'world'));
$u = new URL('my', 'page/id:12', array('hello'=>'world'));
Получение данных из адреса
Фильтрация входных данных
В большинство функций для получения данных из адреса передается параметр $filter - он позволяет проверять и
фильтровать данные, получаемые из адреса. Фильтр может быть callable, regexp или массивом со списком допустимых
значений. Если значения нет, или оно не проходит по фильтру возвращается $default.
Аргументы и параметры
После того, как адрес был разобран, объект URL предоставляет несколько способов доступа к аргументам и параметрам:
hasArgument($num)- Проверка, есть ли аргумент;hasParameter($name)- Проверка, есть ли параметр;getArgument($num, $filter = null, $default = false)- Получить значение аргумента, если оно задано, иначе вернуть $default;getParameter($name, $filter = null, $default = false)- Получить значение параметра, если оно задано, иначе вернуть $default;getParameterAsArray($name, $filter = null, $default = array())- Получить параметр как массив если значения заданы, иначе вернуть $default;getArguments()- Получить массив всех аргументов;getParameters()- Получить массив всех параметров.
Чтобы изменить аргументы или параметры, можно воспользоваться следующими возможностями:
removeArguments(array $arguments = null)- Очистить аргументы. В $arguments можно сразу передать массив новых аргументов;removeParameters(array $parameters = null)- Очистить параметры. В $parameters можно сразу передать массив новых параметров;setArgument($num, $value = null)- Установка значения аргумента.setParameter($name, $value = null)- Установка значения параметра.addArgument($arg)- Добавление аргумента;addParameter($name, $parameter)- Добавление параметра;addArguments($mixed, $_)- Добавление аргументов. Может быть передано несколько аргументов сразу строкой или в массиве;addParameters($array, $_)- Добавление параметров. Может быть передано несколько массивов сразу;
Имя файла и расширение
Если указано имя файла, доступ к нему:
getFileName($strict = false)- Получить имя файла. Если оно не было указано, берется значение последнего аргумента.getFileExtension($default = false)- Получить разрешение файла или $default если оно не указано.
Хост, схема и поддомены
Если при разборе адреса был указан абсолютный путь, объект URL содержит информацию о домене и схеме. Если адрес не был
передан, по умолчанию задан домен http://localhost.
Доступ к данным:
getHost()- домен. По-умолчанию "localhost";getScheme()- схема. По-умолчанию "http";hasSubDomain($level)- проверка, есть ли поддомен заданного уровня. Адресация справа, начиная с "1".getSubDomain($level, $filter = null, $default = false)- получить значение поддомена или $default если оно не задано.
Immutable-объект
Если на основе базового адреса нужно генерировать новые ссылки, не изменяя основной объект, можно воспользоваться классом
URLImmutable - при вызове методов, изменяющих адрес возвращается новый объект, сохраняя оригинал неизменным.
Отображение URL
Объект URL имеет два варианта вывода адреса:
asString($absolute = false)- возвращает строку с относительным или абсолютным адресом;asTag($value = null, $attr = null, $target = null, $absolute = false)- Генерация объекта HTML-ссылка. Подробнее об SQRT\Tag