CodeIgniter User Guide Version 2.0.0


Класс URI

Класс URI предоставляет функции, которые помогают вам получать информацию из строки URI. Если вы используете URI роутинг, вы можете также получать информацио о перезаписанных сегментах.

Примечание: Этот класс инициализируется автоматически системой, поэтому нет нужды делать это вручную.

$this->uri->segment(n)

Позволяет вам получить указанный сегмент. Где n — это номер сегмента, который вы хотите получить. Сегменты пронумерованы слева направо. Например, если ваш полный URL выглядит так:

http://example.com/index.php/news/local/metro/crime_is_up

Номера сегментов будут:

  1. news
  2. local
  3. metro
  4. 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');

Возвращает:

  1. segment/
  2. /segment
  3. /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, если вы используете Роутинг.