Podręcznik użytkownika CodeIgniter wersja 2.2.1


Klasa URI

Klasa URI dostarcza funkcje, które zwracają informacje z ciągu URI. Jeśli używasz routingu URI, możesz również otrzymać informacje na temat "zamienionych" segmentów.

Uwaga: Ta klasa jest ładowana automatycznie przez system, dlatego nie musisz tego robić samodzielnie.

$this->uri->segment(n)

Pozwala na zwrócenie określonego segmentu, gdzie n jest numerem segmentu, który ma zostać zwrócony. Segmenty są ponumerowane od strony lewej do prawej. Dla przykładu, jeśli Twój pełny URL to:

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

Numery segmentów byłyby następujące:

  1. news
  2. local
  3. metro
  4. crime_is_up

Domyślnie funkcja zwraca wartość FALSE (boolean) jeśli dany segment nie istnieje. Funkcja przyjmuje opcjonalny drugi parametr, który pozwala na ustalenie własnej domyślnej wartości, na wypadek gdy podany segment nie istnieje. Dla przykładu, ten kod zwróci zero w przypadku niepowodzenia:

$product_id = $this->uri->segment(3, 0);

Pozwala to na uniknięcie pisania kodu na kształt tego:

if ($this->uri->segment(3) === FALSE)
{
    $product_id = 0;
}
else
{
    $product_id = $this->uri->segment(3);
}

$this->uri->rsegment(n)

Ta funkcja jest identyczna jak poprzednia, za wyjątkiem tego, że pozwala na zwrócenie określonego segmentu adresu URI po jego "przepisaniu" - o ile używasz takiej opcji jak routing URL.

$this->uri->slash_segment(n)

Ta funkcja również jest niemal identyczna jak $this->uri->segment(), za wyjątkiem tego, że dodaje końcowy i/lub początkowy slash - na podstawie drugiego parametru. Jeśli parametr nie jest użyty, dodawany jest tylko końcowy slash. Przykłady:

$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');

Daje nam:

  1. segment/
  2. /segment
  3. /segment/

$this->uri->slash_rsegment(n)

Ta funkcja jest taka sama jak poprzednia, z tym że pozwala dodawać slashe do określonego segmentu z "przepisanego" adresu URI - o ile używasz takiej opcji jak routing URL.

$this->uri->uri_to_assoc(n)

Ta funkcja pozwala na zamianę segmentów URI na tablicę asocjacyjną - klucz/wartość. Spójrz na ten adres URI:

index.php/user/search/name/joe/location/UK/gender/male

Używając tej funkcji, możesz zamienić adres URI na tablicę asocjacyjną o takim kształcie:

[array]
(
    'name' => 'joe'
    'location' => 'UK'
    'gender' => 'male'
)

Pierwszy parametr funkcji pozwala na ustawienie offsetu. Domyślnie jest on ustawiony na 3, z racji tego, że Twój adres URI zazwyczaj zawiera kontroler w pierwszym i funkcję w drugim segmencie. Przykład:

$array = $this->uri->uri_to_assoc(3);

echo $array['name'];

Drugi parametr pozwala na ustawienie domyślnych nazw kluczy. Tablica zwrócona przez funkcję będzie zawsze zawierała oczekiwane indeksy, nawet jeśli adres URI nie będzie ich zawierał. Przykład:

$default = array('name', 'gender', 'location', 'type', 'sort');

$array = $this->uri->uri_to_assoc(3, $default);

Jeśli adres URI nie zawiera, którejś z wartości tablicy dafault, to indeks w tablicy zostanie ustawiony na tę nazwę z wartością FALSE.

$this->uri->ruri_to_assoc(n)

Ta funkcja jest taka sama jak poprzednia, z tym że tworzy tablicę asocjacyjną z użyciem "przepisanego" adresu URI - o ile używasz takiej opcji jak routing URL.

$this->uri->assoc_to_uri()

Za pierwszy parametr bierze tablicę i na jej podstawie generuje ciąg URI. Klucze tablicy będą włączone do ciągu. Przykład:

$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');

$str = $this->uri->assoc_to_uri($array);

// Daje: product/shoes/size/large/color/red

$this->uri->uri_string()

Zwraca kompletny ciąg URI. Dla przykładu, jeśli Twój pełen adres URL to:

http://example.com/index.php/news/local/345

Ta funkcja zwróci:

/news/local/345

$this->uri->ruri_string()

Ta funkcja jest taka samia jak poprzednia, z tym że zwraca ciąg na podstawie "przepisanego" adresu URI - o ile używasz takiej opcji jak routing URL.

$this->uri->total_segments()

Zwraca liczbę segmentów.

$this->uri->total_rsegments()

Ta funkcja jest taka samia jak poprzednia, z tym że zwraca liczbę segmentów na podstawie "przepisanego" adresu URI - o ile używasz takiej opcji jak routing URL.

$this->uri->segment_array()

Zwraca tablicę zawierającą segmenty URI. Przykład:

$segs = $this->uri->segment_array();

foreach ($segs as $segment)
{
    echo $segment;
    echo '<br />';
}

$this->uri->rsegment_array()

Ta funkcja jest taka samia jak poprzednia, z tym że zwraca tablicę zawierającą segmenty URI na podstawie "przepisanego" adresu URI - o ile używasz takiej opcji jak routing URL.