CodeIgniter - conceitos básicos

Controladores

Um controlador é um arquivo de classe simples. Como o nome sugere, ele controla todo o aplicativo por URI.

Criação de um controlador

Primeiro, vá para application/controllerspasta. Você encontrará dois arquivos lá,index.html e Welcome.php. Esses arquivos vêm com o CodeIgniter.

Mantenha esses arquivos como estão. Crie um novo arquivo no mesmo caminho chamado “Test.php”. Escreva o seguinte código nesse arquivo -

<?php 
   class Test extends CI_Controller {
  
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>

o Test classe estende uma classe embutida chamada CI_Controller. Esta classe deve ser estendida sempre que você quiser fazer sua própria classe Controller.

Chamando um Controlador

O controlador acima pode ser chamado pelo URI da seguinte forma -

http://www.your-domain.com/index.php/test

Observe a palavra “test”No URI acima após index.php. Isso indica o nome da classe do controlador. Como demos o nome do controlador “Test", nós estamos escrevendo "test”Após o index.php. O nome da classe deve começar comuppercase letter mas precisamos escrever lowercase letterquando chamamos esse controlador por URI. A sintaxe geral para chamar o controlador é a seguinte -

http://www.your-domain.com/index.php/controller/method-name

Criando e chamando o método do construtor

Vamos modificar a classe acima e criar outro método chamado “olá”.

<?php 
   class Test extends CI_Controller {  
	
      public function index() { 
         echo "This is default function."; 
      } 
  
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

Podemos executar o controlador acima das três maneiras a seguir -

  • http://www.your-domain.com/index.php/test
  • http://www.your-domain.com/index.php/test/index
  • http://www.your-domain.com/index.php/test/hello

Depois de visitar o primeiro URI no navegador, obtemos a saída conforme mostrado na imagem abaixo. Como você pode ver, obtivemos a saída do método “index”, Embora não tenhamos passado o nome do método no URI. Usamos apenas o nome do controlador no URI. Em tais situações, o CodeIgniter chama o método padrão “index”.

Visitando o segundo URI no navegador, obtemos a mesma saída mostrada na imagem acima. Aqui, passamos o nome do método após o nome do controlador no URI. Como o nome do método é “index”, Estamos obtendo a mesma saída.

Visitando o terceiro URI no navegador, obtemos a saída conforme mostrado na imagem abaixo. Como você pode ver, estamos obtendo a saída do método “hello”Porque passamos“hello”Como o nome do método, após o nome do controlador“test”No URI.

Pontos para lembrar

  • O nome da classe do controlador deve começar com uma letra maiúscula.

  • O controlador deve ser chamado com letra minúscula.

  • Não use o mesmo nome do método de sua classe pai, pois isso substituirá a funcionalidade da classe pai.

Visualizações

Pode ser uma página da Web simples ou complexa, que pode ser acessada pelo controlador. A página da web pode conter cabeçalho, rodapé, barra lateral, etc. A visualização não pode ser chamada diretamente. Vamos criar uma visão simples. Crie um novo arquivo emapplication/views com o nome “test.php”E copie o código fornecido abaixo nesse arquivo.

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Altere o código de application/controllers/test.php arquivo conforme mostrado abaixo.

Carregando a visualização

A visualização pode ser carregada pela seguinte sintaxe -

$this->load->view('name');

Onde name é o arquivo de visualização, que está sendo renderizado. Se você planejou armazenar o arquivo de visualização em algum diretório, pode usar a seguinte sintaxe -

$this->load->view('directory-name/name');

Não é necessário especificar a extensão como php, a menos que algo diferente de .php seja usado.

O método index () está chamando o método view e passando o “teste” como argumento para o método view () porque armazenamos a codificação html em “test.php”Arquivo em application/views/test.php.

<?php 
   class Test extends CI_Controller { 
	
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>

Aqui está a saída do código acima -

O fluxograma a seguir ilustra como tudo funciona -

Modelos

As classes de modelos são projetadas para trabalhar com informações do banco de dados. Por exemplo, se você estiver usando o CodeIgniter para gerenciar usuários em seu aplicativo, você deve ter uma classe de modelo, que contém funções para inserir, excluir, atualizar e recuperar os dados de seus usuários.

Criando classe de modelo

Classes de modelo são armazenadas em application/modelsdiretório. O código a seguir mostra como criar uma classe de modelo no CodeIgniter.

<?php 
   Class Model_name extends CI_Model { 
	
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

Onde Model_name é o nome da classe de modelo que você deseja fornecer. Cada classe de modelo deve herdar a classe CI_Model do CodeIgniter. A primeira letra da classe do modelo deve ser maiúscula. A seguir está o código para a classe de modelo dos usuários.

<?php 
   Class User_model extends CI_Model {
	
      Public function __construct() { 
         parent::__construct(); 
      } 
		
   } 
?>

A classe de modelo acima deve ser salva como User_model.php. O nome da classe e o nome do arquivo devem ser iguais.

Carregando modelo

O modelo pode ser chamado no controlador. O código a seguir pode ser usado para carregar qualquer modelo.

$this->load->model('model_name');

Onde model_name é o nome do modelo a ser carregado. Depois de carregar o modelo, você pode simplesmente chamar seu método conforme mostrado abaixo.

$this->model_name->method();

Modelos de carregamento automático

Pode haver situações em que você deseja alguma classe de modelo em todo o seu aplicativo. Nessas situações, é melhor carregá-lo automaticamente.

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();

Conforme mostrado na figura acima, passe o nome do modelo no array que deseja carregar automaticamente e ele será carregado automaticamente, enquanto o sistema está no estado de inicialização e está acessível em todo o aplicativo.

Ajudantes

Como o nome sugere, ele o ajudará a construir seu sistema. Ele é dividido em pequenas funções para atender a diferentes funcionalidades. Vários auxiliares estão disponíveis no CodeIgniter, listados na tabela abaixo. Podemos construir nossos próprios ajudantes também.

Os ajudantes são normalmente armazenados em seu system/helpers, ou application/helpers directory. Assistentes personalizados são armazenados emapplication/helpers o diretório e os ajudantes dos sistemas são armazenados em system/helpersdiretório. CodeIgniter vai olhar primeiro em seuapplication/helpers directory. Se o diretório não existir ou o helper especificado não for localizado, o CodeIgniter irá, em vez disso, procurar em seu globalsystem/helpers/ directory. Cada assistente, seja ele personalizado ou do sistema, deve ser carregado antes de ser usado.

SN Nome e descrição do ajudante
1

Array Helper

O arquivo Array Helper contém funções que auxiliam no trabalho com arrays.

2

CAPTCHA Helper

O arquivo CAPTCHA Helper contém funções que auxiliam na criação de imagens CAPTCHA.

3

Cookie Helper

O arquivo Cookie Helper contém funções que auxiliam no trabalho com cookies.

4

Date Helper

O arquivo Date Helper contém funções que o ajudam a trabalhar com datas.

5

Directory Helper

O arquivo Directory Helper contém funções que auxiliam no trabalho com diretórios.

6

Download Helper

O Download Helper permite que você baixe dados para sua área de trabalho.

7

Email Helper

O Email Helper fornece algumas funções de assistência para trabalhar com Email. Para uma solução de e-mail mais robusta, consulte a Classe de e-mail do CodeIgniter.

8

File Helper

O arquivo File Helper contém funções que auxiliam no trabalho com arquivos.

9

Form Helper

O arquivo Form Helper contém funções que auxiliam no trabalho com formulários.

10

HTML Helper

O arquivo HTML Helper contém funções que auxiliam no trabalho com HTML.

11

Inflector Helper

O arquivo Inflector Helper contém funções que permitem que você altere palavras para plural, singular, caixa de camelo, etc.

12

Language Helper

O arquivo Language Helper contém funções que auxiliam no trabalho com arquivos de idioma.

13

Number Helper

O arquivo Number Helper contém funções que o ajudam a trabalhar com dados numéricos.

14

Path Helper

O arquivo Path Helper contém funções que permitem trabalhar com caminhos de arquivo no servidor.

15

Security Helper

O arquivo Security Helper contém funções relacionadas à segurança.

16

Smiley Helper

O arquivo Smiley Helper contém funções que permitem gerenciar smileys (emoticons).

17

String Helper

O arquivo String Helper contém funções que auxiliam no trabalho com strings.

18

Text Helper

O arquivo Text Helper contém funções que auxiliam no trabalho com texto.

19

Typography Helper

O arquivo Typography Helper contém funções que ajudam a formatar o texto de maneiras semanticamente relevantes.

20

URL Helper

O arquivo URL Helper contém funções que auxiliam no trabalho com URLs.

21

XML Helper

O arquivo XML Helper contém funções que auxiliam no trabalho com dados XML.

Carregando um Helper

Um auxiliar pode ser carregado conforme mostrado abaixo -

$this->load->helper('name');

Onde nome é o nome do ajudante. Por exemplo, se você deseja carregar o URL Helper, ele pode ser carregado como -

$this->load->helper('url');

Encaminhamento

O CodeIgniter possui um sistema de roteamento de URI amigável, para que você possa facilmente redirecionar a URL. Normalmente, há um relacionamento um-para-um entre uma string de URL e sua classe / método de controlador correspondente. Os segmentos em um URI normalmente seguem este padrão -

your-domain.com/class/method/id/
  • o first segment representa a classe do controlador que deve ser chamada.

  • o second segment representa a função de classe, ou método, que deve ser chamado.

  • o third, e quaisquer segmentos adicionais, representam o ID e quaisquer variáveis ​​que serão passadas para o controlador.

Em algumas situações, você pode querer alterar esse mecanismo de roteamento padrão. CodeIgniter fornece facilidade através da qual você pode definir suas próprias regras de roteamento.

Personalizar regras de roteamento

Existe um arquivo específico onde você pode lidar com tudo isso. O arquivo está localizado em application / config / routes.php. Você encontrará um array chamado $ route no qual pode personalizar suas regras de roteamento. A chave no array $ route decidirá o que rotear e o valor decidirá para onde rotear. Existem três rotas reservadas no CodeIgniter.

SN Rotas reservadas e descrição
1

$route['default_controller']

Esta rota indica qual classe de controlador deve ser carregada, se o URI não contém dados, o que será o caso quando as pessoas carregarem sua URL raiz. Você é encorajado a ter uma rota padrão, caso contrário, uma página 404 aparecerá, por padrão. Podemos definir a página inicial do site aqui para que seja carregada por padrão.

2

$route['404_override']

Esta rota indica qual classe de controlador deve ser carregada se o controlador solicitado não for encontrado. Ele substituirá a página de erro 404 padrão. Não afetará oshow_404() função, que continuará carregando o padrão error_404.php arquivo em application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

Como fica evidente pelo valor booleano, essa não é exatamente uma rota. Esta opção permite que você substitua automaticamente traços ('-') por sublinhados nos segmentos de URI do controlador e do método, poupando assim entradas de rota adicionais se você precisar fazer isso. Isso é necessário porque o traço não é uma classe válida ou caractere de nome de método e causará um erro fatal, se você tentar usá-lo.

As rotas podem ser personalizadas por wildcards ou usando regular expressions mas lembre-se de que essas regras personalizadas para roteamento devem vir depois das regras reservadas.

Curingas

Podemos usar dois caracteres curinga, conforme explicado abaixo -

  • (:num) - Corresponderá a um segmento contendo apenas números.

  • (:any) - Irá corresponder a um segmento contendo qualquer caractere.

Example

$route['product/:num']='catalog/product_lookup';

No exemplo acima, se a palavra literal “produto” for encontrada no primeiro segmento da URL e um número for encontrado no segundo segmento, a classe “catálogo” e o método “produto_lookup” serão usados.

Expressões regulares

Como curingas, também podemos usar expressões regulares em $route array keyparte. Se algum URI corresponder à expressão regular, ele será roteado para a parte do valor definida no array $ route.

Example

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

No exemplo acima, um URI semelhante a produtos / sapatos / 123 chamaria de “shoes”Classe do controlador e“id_123”Método.