Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

CodeIgniter User Guide Version 2.1.3


Класс 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, если вы используете 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, в случае, если вы используете 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-роутинг.

Поделиться


Переведено в компании Аринт.

Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter

Яндекс.Метрика