Класс 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, если вы используете Роутинг.
$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, если вы используете Роутинг.
$this->uri->uri_to_assoc(n)
Эта функция позволяет вам получить сегменты URI в ассоциативном массиве. Например этот URI:
index.php/user/search/name/joe/location/UK/gender/male
Используя эту функцию, вы получите ассоциативный массив такого вида:
[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, если вы используете Роутинг.
$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, если вы используете Роутинг.
$this->uri->total_segments()
Возвращает количество сегментов.
$this->uri->total_rsegments()
Функция идентична предыдущей, но она вернет количество сегментов перезаписанного URI, если вы используете Роутинг.
$this->uri->segment_array()
Возвращает массив, содержащий сегменты URI. Например:
$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
echo $segment;
echo '<br />';
}
$this->uri->rsegment_array()
Эта функция идентична предыдущей, за исключением того, что она возвращает мессив элементов перезаписанного URI, если вы используете Роутинг.