Anderson Gonçalves – Introdução ao framework CodeIgniter
Introdução ao
framework CodeIgniter
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
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
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
Anderson Gonçalves – Introdução ao framework CodeIgniter
Outros frameworks
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
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]
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
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.
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
Anderson Gonçalves – Introdução ao framework CodeIgniter
Sistema de rotas
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).
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
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.
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
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.
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();
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');
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
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`);
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`
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
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'
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');
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'
)
)
);
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();
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>');
Anderson Gonçalves – Introdução ao framework CodeIgniter
Obrigado! :)
Dúvidas?

Introdução ao framework CodeIgniter

  • 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
  • 5.
    Anderson Gonçalves –Introdução ao framework CodeIgniter Outros frameworks
  • 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
  • 11.
    Anderson Gonçalves –Introdução ao framework CodeIgniter Sistema de rotas
  • 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>');
  • 28.
    Anderson Gonçalves –Introdução ao framework CodeIgniter Obrigado! :) Dúvidas?