Класс Query предназначен для формирования URL с большим числом параметров при многоступенчатых переходах между страницами, с возможностью модификации параметров.
href="?page=2&a=11&b=22&c=33"
Query::capture('a&b');
$href='?page=3&'.Query::build();
При построении URL обычным путем, путем добавления параметров к ссылкам с помощью $_GET[], нужно помнить, был ли уже добавлен тот или иной параметр. Удаление параметра тем более затруднено.
Класс Query позволяет последовательно формировать сложные параметрические URL-запросы по ходу кода. Вы делаете простые шаги, не беспокоясь о возможных накладках.
Может показаться, что данный способ формирования URL слишком сложен, так как нужно использовать несколько методов класса. Действительно, для простых запросов применять данный класс не имеет смысла, но вы оцените его по достоинству при сложных запросах, например, при построении фильтров товаров интернет-магазина.
Захват нескольких параметров (пакета параметров), поступивших на страницу через URL. Если URL поступает в виде ЧПУ, то оно будет преобразовано в параметрическое.
Примеры:
Query::capture(); //Захватываются все параметры из URL.
Query::capture('a&b[2]');
/* или с помощью массива:
$params['a'] = '';
$params['b'][2] = '';
Query::capture($params);*/
Добавление/изменение параметров в пакете
Примеры:
Query::add('a=11&b[2]=22');
/* или с помощью массива:
$params['a'] = 11;
$params['b'][2] = 22;
Query::add($params); */
Формирование пакета параметров "с нуля". Аналогично методу Query::add(), только предварительно сбрасывается (удаляется) существовавший до этого пакет параметров. Естественно, вызывать в начале метод Query::capture() здесь не нужно.
Извлечение параметров из пакета
Примеры:
Query::get(); //Получить все параметры пакета.
Query::get('a'); //Получить значение параметра из пакета.
Query::get('b[2]');
# C помощью параметра-массива можно получить все параметры за один вызов метода:
$params['a'] = '';
$params['b'][2] = '';
Query::capture($params);
Удаление параметров из пакета
Примеры:
Query::remove('a&b[2]');
/* или с помощью массива:
$params['a'] = '';
$params['b'][2] = '';
Query::remove($params); */
Два параметра: $attachments и $detachments позволяют изменить вывод в последний момент, не затрагивая базового пакета параметров.
Примеры:
$href = '?page=4&'.Query::build('a=aa&b[1]=bb&b[2]=bbb','x&y[3]');
/* или с помощью массива:
$attachments['a'] = 'aa';
$attachments['b'][2] = 'aa';
$attachments['b'][2] = 'aaa';
$detachments['x'] = '';
$detachments['y'][3] = '';
$href = '?page=4&'.Query::build($attachments, $detachments); */
Все параметры автоматически сортируются в алфавитном порядке со следующими исключениями:
Если значения параметров могут содержать спецсимволы URL, то при построении ссылки такие значения нужно кодировать.
$href = '?page=4&'.Query::build('site='.urlencode('bloxcms.net/documentation/'));