Introduo ao framework CodeIgniter
Sobre mim
Anderson Gonalves (Bnus)Instrutor e desenvolvedor Freelancer
Focado em back-end.
Experincia com PHP h 6 anos.
E um pai babo...
https://github.com/Bonus3@AndersonWebM
Framework uma abstrao que une cdigos comuns entre vrios projetos de software provendo uma funcionalidade genrica. Um framework pode atingir uma funcionalidade especfica, por configurao, durante a programao de uma aplicao. Ao contrrio das bibliotecas, o framework quem dita o fluxo de controle da aplicao, chamado de Inverso de Controle.- Wikipedia
Viso geral do CodeIgniter
Licena MIT
Grande documentao e comunidade ativa
Soluo leve para problema complexo usando MVC
Compatibilidade (PHP >= 5.2, suporte a vrios DB)
Alta performance
Liberdade
Sem necessidade de Template Engine
Fcil de aprender
Outros frameworks
Instalao
Faa o download em https://codeigniter.com/download
Descompacte-o em seu servidor. O arquivo index.php indica o root da sua aplicao.
Abra e altere os arquivos config.php e database.php na pasta application/config
Application/config/config.php
No arquivo config.php, h uma varivel $config que armazena um vetor das configuraes possveis. As principais:base_url (http://www.exemplo.com)
index_page ()
subclass_prefix (MY_)
log_threshold (TRUE)
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php/$1 [L]
Application/config/database.php
Neste arquivo fica as configuraes de conexo com o database. O CodeIgniter suporta diversosdatabe, como: MySQL, PostgreSQL, Oracle. As principais configuraoes:DNS ou Hostname
Username
Password
Database
DBDriver
Estrutura de pastas
As duas principais pastas que compe 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 aplicao.
Estrutura de pastas
Cache Pginas em cache
Config Arquivos de configurao
Controllers Arquivos com as classes do controller
Core Arquivos que estendem as funcionalidade do CI ou o motor da aplicao
Helpers Arquivos com funes 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 construdas exclusivamente para o projeto
Models Classes responsveis para acesso a dados em DB ou arquivos (persistncia de dados)
Views Arquivos que geram a interface (retorno) pro usurio
Sistema de rotas
Sistema de rotas
O CodeIgniter trabalha com um sistema de rotas baseado na segmentao de URL, onde atravs deste determinado qual controller usar, qual mtodo acessar e qual parmetro passar (se houver).
Sistema de rotas
Exemplo.com
Carragar o controller default, configurado no arquivo routes.phpExemplo.com/um_controller
Carregar o controller um_controller e executar o mtodo indexExemplo.com/um_controller/um_metodo
Carregar o controller um_controller e executar o mtodo um_metodoExemplo.com/um_controller/um_metodo/um_param
Carregar o controller um_controller, executar o mtodo um_metodo e passar param como parmetro
Application/config/routes.php
No arquivo routes.php onde configuramos o controller default, na opo default_controller, e onde podemos criar rotas personalizadas atravs do vertor armazenado em $route, tendo como ndice o caminho personalizado e, em seu valor, o controller com (ou sem) o mtodo ou parmetro. possvel utilzar expresso regular.Ex: $router['supermercados/:num/pdvs/([a-z0-9_]+)'] = 'pdvs/listar/$1';Acessando por exemplo: exemplo.com/supermercados/3/pdvs/6Ser carregado o controller Pdvs, executar o mtodo listar e passar como parmetro o valor 6.
Controllers
Cada classe controller deve estar num arquivo de mesmo nome, incluindo maisculas e minsculas. Uma sugesto utilizar o padro Nome_da_classe. E deve, obrigatoriamente, estender a classe CI_Controller.Nos controllers, atravs do mtodo view da classe Loader (esta classe instanciada automaticamente) que carregada as views, para isto utilizados:$this->load->view('arquivo'); //Sem a extenso$this->load->view('pasta/arquivo'); //Se estiver numa subpasta
Controllers
O mtodo view() ainda pode receber um vetor como o segundo parmetro, onde que com o ndice criado uma varivel de mesmo nome e o seu valor.Ex: $data = array( 'title' => 'Introduo ao CI');
$this->load->view('exemplo', $data);
Assim, carregar a view exemplo.php, que ter disponvel a varivel $title contendo o valor Introduo ao CI.
Loader
A classe Loader instanciada na inicializao do CI e uma das classes mais utilizadas. Atravs dela, podemos carregar models, helpers e librarys.Qualquer classe carregada, o seu nome, se torna uma propriedade do instncia que o carregou. Ex://Carrega a Classe Usurios da pasta Model$this->load->model('usuarios'); //Agora, existe uma propriedade com o mesmo nome$this->usuarios->metodo_model();
Model
Model so as classes responsveis pela persistncia 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 padro que citei antes (Nome_da_classe).Para utiliz-la deve-se primeiro carreg-la.$this->load->model('nome_da_classe');
Query Builder
Para trabalhar com o banco de dados em nosso model, o CI disponibiliza a classe DB_query_builder, instanciada atravs da library database, e armazenada na propriedade db do objeto instanciado.Esta classe interessante, pois, realiza algumas rotinas automticas, como:Escapar valores
Construir a string a ser executada pelo database
Query Builder - Insert
Para inserir dados utilizamos o mtodo insert(), passando como parmetro 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`);
Query Builder - Update
Para atualizar dados utilizamos o mtodo 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`
Query Builder - Select
Para selecionar dados utilizamos o mtodo get().
$this->db->get('contatos');
//SELECT * FROM contatos
Query Builder - Delete
Para apagar dados utilizamos o mtodo delete().
$where = array( 'id' => $this->input->get('id'));$this->db->delete('contatos', $where);
//DELET FROM contatos WHERE id = 'valor_id'
Library
O CI possui diversas libraries prontas para serem usadas, j vimos a que auxilia na manipulao de bando de dados. H, tambm, a possibilidade de poder criar suas prprias ou estender as j existentes.
Uma das mais usadas o Form Validation.$this->load->library('form_validation');
Form Validation
Esta library permite criar regras de validao para as entradas de formulrios. Fazemos isto atravs de um vetor bidimensional.$rules = array( Array( 'field' => 'campo', 'label' => 'Campo', 'rules' => array('vetor_de_regras'), 'errors' => array( 'regra' => 'Mensagem' ) ));
Form Validation
Configura a library para usar aquela validao:$this->form_validation->set_rules($rules);E executa o mtodo run(), que rotorna um valor booleano, onde TRUE, o formulrio est preenchido corretamente, e FALSE, caso no esteja.
$this->form_validation->run();
Form Validation
Caso o mtodo run() tenha retornado falso, podemos pegar os erros gerados atravs dos mtodos erro_array() ou erro_string().Cada erro retornado estar num pargrafo. Se desejar alterar a tag que envolve o erro, utilize o mtodo set_error_delimiters('tag antes do erro', 'tag depois do erro');Ex:$this->form_validation->set_error_delimiter('', '');
Obrigado! :)
Dvidas?
Anderson Gonalves Introduo ao framework CodeIgniter
Top Related