introdução ao framework codeigniter

Download Introdução ao framework CodeIgniter

If you can't read please download the document

Upload: anderson-goncalves

Post on 18-Jan-2017

340 views

Category:

Education


0 download

TRANSCRIPT

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