Класс URI
Класс URI предоставляет функции, которые помогают вам получать информацию из строк URI. Если вы используете URI-роутинг, вы можете также получить информацию о переписанных сегментах.
Примечание: Этот класс автоматически инициализируется системой, поэтому нет смысла делать это вручную.
$this->uri->segment(n)
Позволяет вам получить указанный сегмент. Где n это номер сегмента, который вы хотите получить. Сегменты пронумерованы слева направо. Например, если ваш полный URL выглядит так:
http://example.com/index.php/news/local/metro/crime_is_up
Соответствие между номерами сегментов и их содержимым будет следующее:
- news
- local
- metro
- crime_is_up
По умолчанию функция возвращает FALSE, если сегмент не существует. Есть второй опциональный параметр, который позволяет вам устанавливать значение по умолчанию в случае отсутствия сегмента. Например, эта инструкция указывает функции на то, что нужно вернуть ноль в случае неудачи:
$product_id = $this->uri->segment(3, 0);
Это помогает избегать написания кода вроде этого:
if ($this->uri->segment(3) === FALSE)
{
$product_id = 0;
}
else
{
$product_id = $this->uri->segment(3);
}
$this->uri->rsegment(n)
Эта функция идентична предыдущей, за исключением того, что она позволяет вам получить конкретный сегмент из вашего переписанного URI, если вы используете URI-роутинг.
$this->uri->slash_segment(n)
Эта функция полностью идентична $this->uri->segment(), за исключением того, что она добавляет ведущий и (или) завершающий слеши, в зависимости от указанного во втором парамере. Если параметр не используется, будет добавлен завершающий слеш. Пример:
$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');
Возвращает:
- segment/
- /segment
- /segment/
$this->uri->slash_rsegment(n)
Эта функция идентична предыдущей, за исключением того, чтоы она позволяет добавлять слеши в переписанные сегменты вашего URI, в случае, если вы используете URI-роутинг.
$this->uri->uri_to_assoc(n)
Эта функция позволяет вам преобразовать сегменты URI в ассоциативный массив пар ключ/значение. Рассмотрим этот URI:
index.php/user/search/name/joe/location/UK/gender/male
Используя эту функцию вы можете преобразовать URI в ассоциативный массив в соответствии с этим прототипом:
[array]
(
'name' => 'joe'
'location' => 'UK'
'gender' => 'male'
)
Первый параметр функции позволяет вам установить смещение. По умолчанию оно установлено в 3, так как ваш URI обычно содержит имя контроллера и его функции в первом и втором сегментах. Пример:
$array = $this->uri->uri_to_assoc(3);
echo $array['name'];
Второй параметр позволяет вам устанавливать ключи по умолчанию, поэтому массив, возвращаемый функцией, всегда будет содержать ожидаемые индексы, даже если они отсутствуют в URI. Пример:
$default = array('name', 'gender', 'location', 'type', 'sort');
$array = $this->uri->uri_to_assoc(3, $default);
Если URI не содержит значения по умолчанию, индекс массива будет установлен с указанным именем и значением FALSE.
Наконец, если соответствующее значение не найдено для заданного ключа (если нечетный номер сегментов URI) значение будет установлено в FALSE.
$this->uri->ruri_to_assoc(n)
Эта функция идентична предыдущей, за исключением того, что она создает ассоциативный массив, используя переписанный URI, если вы используете URI-роутинг.
$this->uri->assoc_to_uri()
Принимает ассоциативный массив на вход и генерирует из него строку URI. Ключи массива будут включены в строку. Пример:
$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
$str = $this->uri->assoc_to_uri($array);
// Сделает: product/shoes/size/large/color/red
$this->uri->uri_string()
Возвращает строку с полным URI. Например, если это ваш полный URL:
http://example.com/index.php/news/local/345
Тогда функция вернет:
/news/local/345
$this->uri->ruri_string()
Эта функция идентична предыдущей, за исключением того, что она возвращает переписанную строку URI, в случае если вы используете URI-роутинг.
$this->uri->total_segments()
Вернет количество сегментов.
$this->uri->total_rsegments()
Эта функция идентична предыдущей, за исключением того, что она возвращает общее количество сегментов вашего переписанного URI в случае, если вы используете URI-роутинг.
$this->uri->segment_array()
Возвращает массив, содержащий сегменты URI. Например:
$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
echo $segment;
echo '<br />';
}
$this->uri->rsegment_array()
Эта функция идентична функции выше, за исключенеим того, что она возвращает массив сегментов переписанного URI, если вы используете URI-роутинг.