Classe URI
A Classe URI provê funções que o ajudarão recuperar informações a partir de suas string URI. Se você usa o roteamento URI, pode ainda recuperar informações sobre os segmentos re-roteados.
Nota: Esta classe é inicializada automaticamente pelo sistema, por isso não é necessário fazê-lo.
$this->uri->segment(n)
Permite que você recupere um segmento específico. Onde n é o número do segmento que você deseja recuperar. Segmentos são numeros da esquerda pra direita. Por exemplo, se sua URL completa for assim:
http://www.seu-site.com/index.php/noticias/locais/metro/crime_aumenta
O número dos segmentos seriam estes:
- noticias
- locais
- metro
- crime_aumenta
Por default, a função retorna FALSE (booleano) se o segmento não existir. Há um segundo parâmetro adicionar que lhe permite configurar seu próprio valor padrão se o segmento estiver faltando. Por exemplo, isto diria à função retornar o número zero no advento de uma falha:
$product_id = $this->uri->segment(3, 0);
Isto ajuda evitar escrever código como desse jeito:
if ($this->uri->segment(3) === FALSE)
{
$product_id = 0;
}
else
{
$product_id = $this->uri->segment(3);
}
$this->uri->rsegment(n)
Esta função é idência a anterior, exceto que ela lhe permite recuperar um segmento específico em seus URI re-roteados, se você estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->slash_segment(n)
Esta função é praticamente idêntica a $this->uri->segment(), exceto que ela adiciona uma barra antes e/ou depois baseado no segundo parâmetro. Se o parâmetro não for usado, a barra é adicionada antes. Exemplo:
$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');
Retorna:
- segmento/
- /segmento
- /segmento/
$this->uri->slash_rsegment(n)
Esta função é idência a anterior, exceto que ela lhe permite adicionar barras a um segmento específico seus URI re-roteados, se você estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->uri_to_assoc(n)
Esta função lhe permite tranformar segmentos URI em uma array associativa de pares chave/valor. Considere este URI:
index.php/usuario/busca/nome/joe/localizacao/UK/sexo/masculino
Usando esta função, você pode transformar a URI em uma array associatia usando este protótipo:
[array]
(
'nome' => 'joe'
'localizacao' => 'UK'
'sexo' => 'masculino'
)
O primeiro parâmetro da função lhe permite configurar a partir de qual segmento deve começar o processamento. Por default, ela começara do 3, já que seu URI normalmente irá conter um controller/função no primeiro e segundo parâmetro respectivamente. Exemplo:
$array = $this->uri->uri_to_assoc(3);
echo $array['nome'];
O segundo parâmetro lhe permite configurar os nomes de chave padrões, para que a array retornada pela função sempre contenha indíces esperados, mesmo se faltantes na URI. Exemplo:
$default = array('nome', 'sexo', 'localização', 'tipo', 'espécie');
$array = $this->uri->uri_to_assoc(3, $default);
Se o URI não contiver um valor no segmento 3, um índice na array será adicionadado com esse nome, com o valor FALSE.
Por último, se um valor correspondente a uma dada chave não for encontrado para (se hover um número ímpar de segmentos URI), o valor será marcado como FALSE (booleano).
$this->uri->ruri_to_assoc(n)
Esta função é idêntica a anterior, exceto que ela cria uma array associativa usando seus URI re-roteados, se você estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->assoc_to_uri()
Pega uma array associativa como entrada e gera uma string URI a partir dela. As chaves da array serào incluídas na string. Exemplo:
$array = array('produto' => 'sapatos', 'tamanho' => 'grande', 'cor' => 'vermelho');
$str = $this->uri->assoc_to_uri($array);
// Produz: produto/sapatos/tamanho/grande/cor/vermelho
$this->uri->uri_string()
Retorna uma string com o URI completo. Por exemplo, se esta é sua URL completa:
http://www.seu-site.com/index.php/noticas/local/345
A função retornaria isto:
noticas/local/345
$this->uri->ruri_string(n)
Esta função é idêntica a anterior, exceto que ela retorna seus URI re-roteados, se você estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->total_segments()
Retorna o número total de segmentos.
$this->uri->total_rsegments(n)
Esta função é idêntica a anterior, exceto que ela retorna o número total de segmentos em seus URI re-roteados, se você estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->segment_array()
Retorna uma array contendo os segmentos URI. Por exemplo:
$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
echo $segment;
echo '<br />';
}
$this->uri->rsegment_array(n)
Esta função é idêntica a anterior, exceto que ela retorna a array contendo os segmentos em seus URI re-roteados, se você estiver usando a funcionalidade URI Routing do Code Igniter.