O documento apresenta uma introdução ao framework PHP CodeIgniter. Resume os principais pontos sobre: 1) Visão geral do CodeIgniter, incluindo sua licença, documentação, desempenho e facilidade de uso; 2) Instalação e configuração básica do framework; 3) Estrutura de pastas e principais elementos como controllers, models e views.
1. Anderson Gonçalves – Introdução ao framework CodeIgniter
Introdução ao
framework CodeIgniter
2. Anderson Gonçalves – Introdução ao framework CodeIgniter
Sobre mim
Anderson Gonçalves (Bônus)
● Instrutor e desenvolvedor Freelancer
● Focado em back-end.
● Experiência com PHP há 6 anos.
● E um pai babão...
https://github.com/Bonus3
@AndersonWebM
3. Anderson Gonçalves – Introdução ao framework CodeIgniter
Framework é uma abstração que une códigos comuns entre
vários projetos de software provendo uma funcionalidade
genérica. Um framework pode atingir uma funcionalidade
específica, por configuração, durante a programação de uma
aplicação. Ao contrário das bibliotecas, é o framework quem dita
o fluxo de controle da aplicação, chamado de Inversão de
Controle.
- Wikipedia
4. Anderson Gonçalves – Introdução ao framework CodeIgniter
Visão geral do CodeIgniter
● Licença MIT
● Grande documentação e comunidade ativa
● Solução leve para problema complexo usando MVC
● Compatibilidade (PHP >= 5.2, suporte a vários DB)
● Alta performance
● Liberdade
● Sem necessidade de Template Engine
● Fácil de aprender
6. Anderson Gonçalves – Introdução ao framework CodeIgniter
Instalação
● Faça o download em https://codeigniter.com/download
● Descompacte-o em seu servidor. O arquivo index.php indica o
root da sua aplicação.
● Abra e altere os arquivos config.php e database.php na pasta
application/config
7. Anderson Gonçalves – Introdução ao framework CodeIgniter
Application/config/config.php
No arquivo config.php, há uma variável $config que armazena
um vetor das configurações possíveis. As principais:
● base_url (http://www.exemplo.com)
● index_page ()
● subclass_prefix (MY_)
● log_threshold (TRUE)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
8. Anderson Gonçalves – Introdução ao framework CodeIgniter
Application/config/database.php
Neste arquivo fica as configurações de conexão com o database.
O CodeIgniter suporta diversosdatabe, como: MySQL,
PostgreSQL, Oracle. As principais configuraçoes:
● DNS ou Hostname
● Username
● Password
● Database
● DBDriver
9. Anderson Gonçalves – Introdução ao framework CodeIgniter
Estrutura de pastas
As duas principais pastas que
compõe o CI é system e
application.
Na system, fica os arquivos core
do framework, só mexa nesta
pasta se realmente souber o que
está fazendo. E application é onde
ficam os arquivos que forma
nossa aplicação.
10. Anderson Gonçalves – Introdução ao framework CodeIgniter
Estrutura de pastas
● Cache – Páginas em cache
● Config – Arquivos de configuração
● Controllers – Arquivos com as classes do controller
● Core – Arquivos que estendem as funcionalidade do CI ou o
“motor” da aplicação
● Helpers – Arquivos com funções de ajuda
● Hooks – Arquivos contendo classes a ser usadas em gatilhos do CI
● Language – Pastas e arquivos para o suporte a multi- linguagem
● Library – Bibliotecas construídas exclusivamente para o projeto
● Models – Classes responsáveis para acesso a dados em DB ou
arquivos (persistência de dados)
● Views – Arquivos que geram a interface (retorno) pro usuário
12. Anderson Gonçalves – Introdução ao framework CodeIgniter
Sistema de rotas
O CodeIgniter trabalha com um sistema de rotas baseado na
segmentação de URL, onde através deste é determinado qual
controller usar, qual método acessar e qual parâmetro passar (se
houver).
13. Anderson Gonçalves – Introdução ao framework CodeIgniter
Sistema de rotas
● Exemplo.com
Carragará o controller default, configurado no arquivo routes.php
● Exemplo.com/um_controller
Carregará o controller um_controller e executará o método index
● Exemplo.com/um_controller/um_metodo
Carregará o controller um_controller e executará o método um_metodo
● Exemplo.com/um_controller/um_metodo/um_param
Carregará o controller um_controller, executará o método um_metodo e
passará param como parâmetro
14. Anderson Gonçalves – Introdução ao framework CodeIgniter
Application/config/routes.php
No arquivo routes.php é onde configuramos o controller default, na opção
default_controller, e onde podemos criar rotas personalizadas através
do vertor armazenado em $route, tendo como índice o caminho
personalizado e, em seu valor, o controller com (ou sem) o método ou
parâmetro. É possível utilzar expressão regular.
Ex: $router['supermercados/:num/pdvs/([a-z0-9_]+)'] = 'pdvs/listar/$1';
Acessando por exemplo: exemplo.com/supermercados/3/pdvs/6
Será carregado o controller Pdvs, executar o método listar e passar
como parâmetro o valor 6.
15. Anderson Gonçalves – Introdução ao framework CodeIgniter
Controllers
Cada classe controller deve estar num arquivo de mesmo nome,
incluindo maiúsculas e minúsculas. Uma sugestão é utilizar o
padrão Nome_da_classe. E deve, obrigatoriamente, estender a
classe CI_Controller.
Nos controllers, é através do método view da classe Loader
(esta classe é instanciada automaticamente) que é carregada as
views, para isto utilizados:
$this->load->view('arquivo'); //Sem a extensão
$this->load->view('pasta/arquivo'); //Se estiver numa subpasta
16. Anderson Gonçalves – Introdução ao framework CodeIgniter
Controllers
O método view() ainda pode receber um vetor como o segundo
parâmetro, onde que com o índice é criado uma variável de
mesmo nome e o seu valor.
Ex: $data = array(
'title' => 'Introdução ao CI'
);
$this->load->view('exemplo', $data);
Assim, carregará a view exemplo.php, que terá disponível a
variável $title contendo o valor Introdução ao CI.
17. Anderson Gonçalves – Introdução ao framework CodeIgniter
Loader
A classe Loader é instanciada na inicialização do CI e é uma das
classes mais utilizadas. Através dela, podemos carregar models,
helpers e librarys.
Qualquer classe carregada, o seu nome, se torna uma
propriedade do instância que o carregou. Ex:
//Carrega a Classe Usuários da pasta Model
$this->load->model('usuarios');
//Agora, existe uma propriedade com o mesmo nome
$this->usuarios->metodo_model();
18. Anderson Gonçalves – Introdução ao framework CodeIgniter
Model
Model são as classes responsáveis pela persistência dos dados,
geralmente, trabalhando com banco de dados. O nome da classe
deve ser o mesmo do arquivo e deve, obrigatoriamente, estender
da classe CI_Model. Sugiro o mesmo padrão que citei antes
(Nome_da_classe).
Para utilizá-la deve-se primeiro carregá-la.
$this->load->model('nome_da_classe');
19. Anderson Gonçalves – Introdução ao framework CodeIgniter
Query Builder
Para trabalhar com o banco de dados em nosso model, o CI
disponibiliza a classe DB_query_builder, instanciada através da
library database, e armazenada na propriedade db do objeto
instanciado.
Esta classe é interessante, pois, realiza algumas rotinas
automáticas, como:
● Escapar valores
● Construir a string a ser executada pelo database
20. Anderson Gonçalves – Introdução ao framework CodeIgniter
Query Builder - Insert
Para inserir dados utilizamos o método insert(), passando como
parâmetro um vetor, onde o índice é o nome do campo (coluna)
da tabela.
Ex: $data = array(
'nome' => $this->input->post('nome'),
'telefone' => $this->input->post('telefone')
);
$this->db->insert('contatos', $data);
//INSERT INTO `contatos` (nome, telefone) VALUES (`valor_nome`, `valor_telefone`);
21. Anderson Gonçalves – Introdução ao framework CodeIgniter
Query Builder - Update
Para atualizar dados utilizamos o método update().
Ex: $data = array(
'nome' => $this->input->post('nome'),
'telefone' => $this->input->post('telefone')
);
$where = array(
'id' => $this->input->post('id')
);
$this->db->update('contatos', $data, $where);
//UPDATE `contatos` SET `nome` = `valor_nome`, `telefone` = `valor_telefone` WHERE `id` = `valor_id`
22. Anderson Gonçalves – Introdução ao framework CodeIgniter
Query Builder - Select
Para selecionar dados utilizamos o método get().
$this->db->get('contatos');
//SELECT * FROM contatos
23. Anderson Gonçalves – Introdução ao framework CodeIgniter
Query Builder - Delete
Para apagar dados utilizamos o método delete().
$where = array(
'id' => $this->input->get('id')
);
$this->db->delete('contatos', $where);
//DELET FROM contatos WHERE id = 'valor_id'
24. Anderson Gonçalves – Introdução ao framework CodeIgniter
Library
O CI possui diversas libraries prontas para serem usadas, já
vimos a que auxilia na manipulação de bando de dados. Há,
também, a possibilidade de poder criar suas próprias ou estender
as já existentes.
Uma das mais usadas é o Form Validation.
$this->load->library('form_validation');
25. Anderson Gonçalves – Introdução ao framework CodeIgniter
Form Validation
Esta library permite criar regras de validação para as entradas
de formulários. Fazemos isto através de um vetor bidimensional.
$rules = array(
Array(
'field' => 'campo',
'label' => 'Campo',
'rules' => array('vetor_de_regras'),
'errors' => array(
'regra' => 'Mensagem'
)
)
);
26. Anderson Gonçalves – Introdução ao framework CodeIgniter
Form Validation
Configura a library para usar aquela validação:
$this->form_validation->set_rules($rules);
E executa o método run(), que rotorna um valor booleano, onde
TRUE, o formulário está preenchido corretamente, e FALSE,
caso não esteja.
$this->form_validation->run();
27. Anderson Gonçalves – Introdução ao framework CodeIgniter
Form Validation
Caso o método run() tenha retornado falso, podemos pegar os
erros gerados através dos métodos erro_array() ou
erro_string().
Cada erro retornado estará num parágrafo. Se desejar alterar a
tag que envolve o erro, utilize o método
set_error_delimiters('tag antes do erro', 'tag depois do erro');
Ex:
$this->form_validation->set_error_delimiter('<div>', '</div>');