barcamp 2007 - codeigniter e oncologiapediátrica.org

17
Joaquim Rendeiro » BarCamp » Set. 2007

Upload: jqrd

Post on 21-Jun-2015

1.718 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

Joaquim Rendeiro » BarCamp » Set. 2007

Page 2: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

CodeIgniter – Framework MVC em PHP

Web

Controlador Vista

ModeloBase deDados

» Set. 2007 2BarCamp Portugal

Page 3: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

CodeIgniter – Controladores

Classe que é o ponto de entrada na aplicação Métodos correspondem a acções, argumentos

são mapeados aos segmentos do URL

class Gallery extends Controller {

function recent($page = 1) {

$this->output->cache(5);

// ... }

}

» Set. 2007 3BarCamp Portugal

Page 4: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

CodeIgniter – Modelos

Interação simples por SQL$this->db->query(‘select ...’);

“Diz que é uma espécie de” ActiveRecord$this->db->where(‘...’, ‘...’)->orderby(‘...’);

$this->db->get(‘tabela’);

» Set. 2007 4BarCamp Portugal

Page 5: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

CodeIgniter – Scaffolding

Baseado numa palavra-chave do URLwww.website.com/videos/palavra_scaffold

É apenas activado no controlador para determinada tabela

$this->load->scaffolding(‘videos’);

Não gera formulários nem controladores!

» Set. 2007 5BarCamp Portugal

Page 6: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

CodeIgniter – Vistas

Sintaxe própria para templates (tipo Smarty) Não é obrigatório, pode usar-se PHP simples

É possível “hackar” o código de modo a mostrar uma vista com o mesmo nome da acção actual (uma linha de código)...

... mas já não é necessário: Pontos de Extensão

» Set. 2007 6BarCamp Portugal

Page 7: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

CodeIgniter – Extensibilidade

Hooks: Em resposta a certos eventos, podem ser executadas funções da aplicação

Exemplo: Autenticação de utilizadores Hook em “Post Controller Constructor”: inicializar

sessão; caso o utilizador não esteja autenticado, redireccionar para página de login;

Hook em “Post Controller”: salvar a sessão.

» Set. 2007 7BarCamp Portugal

Page 8: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

CodeIgniter – Visão Geral

Models Views Controllers Libraries & Plugins Helpers ...

- -++++++++

» Set. 2007 8BarCamp Portugal

Page 9: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

OncologiaPediátrica.org

Objectivos: Apoiar os pais e familiares de crianças que

sofrem de Cancro Criar uma fonte de informação em Português

credível na área Possibilitar o contacto e aproximação de pessoas

que são afectadas pelo mesmo problema

» Efeito Comunidade» Set. 2007 9BarCamp Portugal

Page 10: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

OncPed.org – Características do Site

Cinco grandes áreas distintas A principal tabela tem uma relação

1-* com ela própria

Um developer Pouco tempo

» Procura de solução abrangente» Set. 2007 10BarCamp Portugal

Page 11: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

OncPed.org – Limites do CodeIgniter

“ActiveRecord” É uma versão muito simplificada Não abstrai eficazmente a base de dados Não disponibiliza associações entre modelos

Scaffolding É apenas temporário, não gera vistas ou

controladores

» Set. 2007 11BarCamp Portugal

Page 12: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

OncPed.org – Soluções

SuperModel Aparentemente similar ao scaffolding do

CodeIgniter para criar e editar, mas... Permite especificar o conjunto de campos que

serão visíveis no formulário Permite atribuir regras de validação e valores por

omissão aos campos do modelo

» Set. 2007 12BarCamp Portugal

Page 13: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

OncPed.org – Soluções

class Artigo extends SuperModel { var $primary = 'id'; ... var $fields = array( 'titulo' => array( 'label' => 'Título', 'type' => 'text', 'rules' => 'required|max_length[255]', 'class' => 'text_field'), ... );}

» Set. 2007 13BarCamp Portugal

Page 14: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

OncPed.org – Soluções++

Com base no código do SuperModel... Em vez de gerar os formulários on-demand, criar os

ficheiros correspondentes Completar com vistas de listar e apagar Adicionar a geração do ficheiro do controlador

Tempo que levou a produzir: aprox. uma semana Benefício ao longo do desenvolvimento:

» Priceless

» Set. 2007 14BarCamp Portugal

Page 15: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

OncPed.org – Soluções++

Class Artigos extends Controller {

function update() {

if($this->artigo->run()) { // validation

if($this->artigo->update()) { // database

...

} else { ... }

} else { ... }

}

}

» Set. 2007 15BarCamp Portugal

Page 16: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

OncologiaPediátrica.org

Desde Abril, média de 106 visitantesdiários, ou 3235 visitantes mensais

101 testemunhos e 41 comentáriosrecebidos no site

62 contactos directos, compedidos de informação,aconselhamento, voluntariado, ...

» Set. 2007 16BarCamp Portugal

Page 17: BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org

» Obrigado

Joaquim Rendeiro » BarCamp » Set. 2007