Класс URI
Класс URI предоставляет функции помогающие извлекать информацию из строки URI. Если используется URI роутинг, то также извлекается информация о перенаправленных сегментах.
Примечание: Этот класс инициализируется системой автоматически, поэтому нет необходимости делать это вручную.
$this->uri->segment(n)
Позволяет извлекать определенные сегменты, где n это номер извлекаемого сегмента. Сегменты нумеруются слева на право. Например, если полный URL такой:
http://www.your-site.com/index.php/news/local/metro/crime_is_up
, то номера сегментов будут следующие:
- news
- local
- metro
- crime_is_up
По-умолчанию функция возвращает FALSE (boolean), если сегменты отсутствуют. Опциональный второй параметр позволяет задать собственное значение по-умолчанию для отсутствующего сегмента. Например, следующим образом можно указать функции возвращать ноль в случае ошибки:
$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 роутинга CodeIgniter'а.
$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 роутинга CodeIgniter'а.
$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'
)
Первый параметр функции позволяет задать смещение. С тех пор как первый и второй сегмент URI содержат имя контроллера и функции, значение смещения по-умолчанию устанавливается в 3. Пример:
$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 (boolean).
$this->uri->ruri_to_assoc(n)
Эта функция идентична предыдущей за тем исключением, что она создает ассоциативный массив используя перенаправленный URI, в случае использования функционала URI роутинга CodeIgniter'а.
$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://www.your-site.com/index.php/news/local/345
, то функция вернет:
/news/local/345
$this->uri->ruri_string(n)
Эта функция идентична предыдущей за тем исключением, что она возвращает перенаправленный URI, в случае использования функционала URI роутинга CodeIgniter'а.
$this->uri->total_segments()
Возвращает общее число сегментов.
$this->uri->total_rsegments()
Эта функция идентична предыдущей за тем исключением, что она возвращает общее число сегментов в перенаправленном URI, в случае использования функционала URI роутинга CodeIgniter'а.
$this->uri->segment_array()
Возвращает массив содержащий сегменты URI. Например:
$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
echo $segment;
echo '<br />';
}
$this->uri->rsegment_array(n)
Эта функция идентична предыдущей за тем иключением, что она возвращает массив сегменов в перенаправленном URI, в случае использования функционала URI роутинга CodeIgniter'а.