sqrt-pro / url
SQRT.pro URL is part of SQRT Framework
Installs: 1 428
Dependents: 3
Suggesters: 0
Security: 0
Stars: 1
Watchers: 4
Forks: 0
Open Issues: 0
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: 2024-12-17 04:01:30 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