Apresentacao codeigniter
Upcoming SlideShare
Loading in...5
×
 

Apresentacao codeigniter

on

  • 3,689 views

Apresentação feita em dupla com @franciscosouza para o II Workshop PHP

Apresentação feita em dupla com @franciscosouza para o II Workshop PHP

Statistics

Views

Total Views
3,689
Views on SlideShare
3,689
Embed Views
0

Actions

Likes
1
Downloads
81
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Bom dia, hoje vamos falar sobre o CodeIgniter, um framework PHP para construção de aplicações web com MVC. xikin
  • Se você dormiu na outra palestra e não sabe o que é framework, boa sorte :P CodeIgniter é um framework PHP, e você já sabe o que é um framework e por que usar um framework. Isso significa que podemos focar no CodeIgniter, na parte prática da coisa :) xikin
  • Mas, antes de seguir com o CodeIgniter, quem vos fala?! xikin
  • Bom, meu nome é Francisco, e eu trabalho com desenvolvimento web na Giran Soluções e Ensino. xikin
  • [...] xikin
  • [...] xikin
  • [...] xikin
  • E esse é o André Tagliati, o Gligli o/ Ele também trabalha com desenvolvimento de softwares web na Giran xikin
  • [...] xikin
  • Acabamos de assistir a uma palestra sobre o uso de frameworks em PHP. Mas é importante notar que alguns frameworks dão dor de cabeça para instalar e configurar. gligli
  • Com o CodeIgniter não, instalar e configurar é facinho :D gligli
  • Você entra no site, baixa a última versão, altera seis linhas de configuração (banco de dados e URL) e pronto :) Configura a URL no arquivo config.php Configura a conexão com o banco de dados no arquivo database.php. E pronto! :D gligli
  • Welcome to CodeIgniter :D gligli
  • Hora de programar. Já vimos que configurar é tranquilo, com poucas linhas de código, mas e agora, para construir uma aplicação? Como é a estrutura do CodeIgniter? xikin
  • Vamos explorar o MVC do CodeIgniter, conhecer cada uma das camadas. Já aproveitando o embalo do que o tio hackin falou na palestra anterior. Não lembra? Chama o Hackin! xikin
  • Podemos dizer que nossos modelos fazem parte da turma que trabalharão com a informação de nosso banco de dados... gligli
  • O acesso ao banco configuramos anteriormente.. mas como chegar a nossas queridas tabelas? E no modelo que vamos perfazer o caminho e chegar a informação desejada... É o modelo que terá a função de retornar as informações e onde devemos determinar o caminho para chegar aos dados tão desejados! gligli
  • Começamos extendendo nossa Modelo da classe Model que é fornecida pelo CI. gligli
  • Temos então nosso model definido... ou nosso protótipo.. A principio não apresenta nada de surpreendente Criado esse modelo podemos então listar tudo que compõe nosso crud padrão... e como o codeIgniter trabalha com o Active record podemos tirar um pouco de proveito disso... gligli
  • Tu tava falando de model e agora vem com active record? Vou explicar... O code igniter utiliza uma versão modificada do pattern Active Record para “trabalhar” com nosso banco de dados permitindo acessar, inserir, atualizar e excluir dados de forma simplificada. gligli
  • Sabendo disso podemos criar métodos em nosso Modelo que buscam a informação que necessitamos... gligli
  • Assim em nosso modelo temos um método que retorna todos as entradas para a tabela pessoas. gligli
  • Então nas actions criadas em nosso amiguinho controller poderemos usufruir da camada de modelo... mas nem falamos de controller ainda... isso virá logo a seguir... gligli
  • Ter que criar o crud todo... fica um pouco chao... o codeigniter poderia bem fazer todo o trabalho e eu ficar tranquilão.. bem... infelizmente o code igniter não faz tudo... nativamente. gligli
  • Mas existe uma alternativa...muito interessante. gligli
  • Existe um orm desenvolvido para o codeigniter que seria até mesmo tema de uma boa conversa que dá conta de muitas das necessidades no desenvolvimento da aplicação gligli
  • Seguindo uma ordem lógica, e não a ordem da sigla, vamos falar um pouco sobre a camada de controle do CodeIgniter. xikin
  • Eis o fluxo de uma aplicação no CodeIgniter xikin
  • Tá vendo esse carinha em destaque? xikin
  • Esse! Ele é o application controller, o controlador da aplicação :D Vamos entender um pouco do funcionamento da camada de controle do CodeIgniter. xikin
  • Primeira coisa: não perca o controle. Com a simplicidade e facilidade da camada de controle do CodeIgniter, tudo ficará mais fácil para todos :D xikin
  • No CodeIgniter, controllers são classes que herdam da classe Controller, provida pelo CodeIgniter. xikin
  • Eis um exemplo de controller. xikin
  • Action? O que é action? o__O' xikin
  • Action são métodos públicos dentro da classe de controle. Trata-se de métodos que recebem a requisição HTTP do cliente e se encarregam de dar a resposta em mesmo formato, seja carregando uma view ou retornando algum JSON. Cada action é acessada a partir do navegador, por uma URL. Mas, como eu acesso tais actions? xikin
  • CodeIgniter usa a ideia de convenção mais que configuração, ou seja, as URLs são construídas baseadas em convenções, com menos configuração :) Mas como é isso? xikin
  • Você tem a URL, o endereço do seu site. xikin
  • Tem o controller. xikin
  • E dentro do controller tem a action, que é um método. xikin
  • Caso esse método receba parâmetros, só passar aqui e está tudo resolvido :) xikin
  • gligli
  • Lembra do fluxo de aplicação? Pois bem. Estamos de volta! Agora saindo do controllere... gligli
  • Viu? Pois é... nesse amiguinho ai é onde nós vamos “chamar” uma página gligli
  • Com um simples comando em nosso controller dizendo qual arquivo será carregado para visão...Dessa forma estamos declarando qual arquivo será retornado quando o controller( ou melhor ainda action ) em questão for requisitado gligli
  • Temos assim o retorno do conteúdo de nosso amigo arquivo hello gligli
  • Beleza... mas e agora? gligli
  • Já tenho um html... mas quero fazer alguma coisa que possua informações.. quero conteúdo dinânico!... não tem problema! Você pode passar tais informações facilmente. gligli
  • De boa véi gligli
  • Você usa um array usando indices de chave.... gligli
  • Eeeeeee gligli
  • Chama o seu indice como uma string no html. Super sussa.... “Mas eu gosto de dividir meus arquivo..” Calma... tem mais! gligli
  • Você pode chamar multiplas views! Ó que doideira... aqui num esquema loco de topo... conteudo e rodape! gligli
  • Ou Ainda podemos retornar uma view como dados! Incrível! gligli
  • Vai dizer que não é bacana? E você pode passar objetos... arrays...e por ai vai gligli
  • Fase bônus, vamos ver o que o CodeIgniter tem a oferecer além das três camadas do modelo MVC. xikin
  • […] xikin
  • Validar formulários é um saco né?! xikin
  • Vamos a um exemplo usando o método padrão de validação com PHP :D Veja, estamos usando o CodeIgniter, então com quatro ifs e um array, podemos validar um formulário de contato e despachar para a view. xikin
  • E na view nós escrevemos este código e pronto, tudo muito simples, separando em camadas, temos uma validação massa né?! Claro que não, é chato e repetitivo ficar validando dados com um monte de Ifs. xikin
  • O problema é que estamos fazendo as coisas da forma errada. E o CodeIgniter pode nos ajudar a fazer as coisas de uma forma melhor. xikin
  • O CodeIgniter conta com várias bibliotecas, e uma delas é a biblioteca de validação de formulário. Assim como se faz com modelos e views, nós temos que fazer o load de todas as bibliotecas que vamos utilizar. A biblioteca de validação de formulários, chamada form_validation , é carregada desta forma então :D xikin
  • Então nós configuramos as regras de validação: - Campo nome requerido; - Campo e-mail requerido e e-mail válido; - Campo mensagem requerido. xikin
  • Então nós executamos :D xikin
  • E na view, o código simples :D Se as coisas derem errado, as mensagens aparecem na tela ;D xikin
  • Eis o resultado :) Claro que o seu designer pode deixar isso mais bonito, mas veja como é simples validar um simples formulário, e nesta mesma linha, se torna simples validar qualquer formulário :D xikin
  • Uma característicapresente em alguns frameworks web como Django, Flask e Rails, é o uso de um “sub-framework” de mensagens, para trocar mensagens entre as páginas. Tais mensagens também são conhecidas como flashs. O CodeIgniter provê uma biblioteca de sessão que inclui armazenamento de dados por apenas um request, trabalhando com a ideia de flashdata. Assim, podemos utilizar variáveis neste escopo para trocar mensagens entre redirecionamentos. Por exemplo, se desejamos exibir uma mensagem após enviar o formulário de contato, podemos simplesmente guardar a mensagem dentro dos “dados flash” e exibir na view. gligli
  • Cuma?! Não entendi absolutamente nada! Show me the code, man! :D gligli
  • Como session é uma biblioteca, a primeira coisa a fazer antes de utilizá-la, é carregá-la :) Após carregar a biblioteca, podemos utilizar o método set_flashdata para salvar uma mensagem de notice. O primeiro parâmetro é a chave que vamos salvar, o segundo é o valor. Salvamos a mensagem “Contato enviado com sucesso!” na chave “notice”, dentro dos “dados de flash”. gligli
  • Ta, mas é só isso? Esse bônus é só uma biblioteca de validação de formulários e um frameworkzinho pra troca de mensagens? gligli
  • Claro que não. O CodeIgniter também conta com bibliotecas para construção de carrinho de compras, envio de e-mail (por SMTP ou outro método), criptografia dos dados, upload de arquivos, manipulação de imagens, tratamento de dados submetidos via formulário, paginação, sessão, parsing de templates, URI (para trabalhar com as URLs no sistema), XML-RPC e mais um porrada de coisas, confira no site oficial :) xikin
  • Bão demais :D xikin
  • Além das bibliotecas, o CodeIgniter conta também com helpers, que são agregados de funções prontos para serem utilizadas em sistemas desenvolvidos com o CodeIgniter. É como ter um arquivo com funções, com a diferença de que essas funções foram construídas e testadas por várias pessoas, e têm maior garantia de funcionamento. xikin
  • O CodeIgniter conta com um helper para lidar com Arrays, obter elementos, posição de elementos (encapsulanto funções nativas do PHP). Cookie Helper, para facilmente lidar com os cookies, que torna simples tarefas e operações com cookies, como armazenamento, obtenção, dentre outros. Date Helper, conta com funções para lidar com datas, como funções para conversão e obtenção de data corrente. Download Helper, para facilmente forçar o download de alguns arquivos, útil para trabalhar junto com a biblioteca de upload. Temos também o e-mail helper, que conta com funções para validação de e-mail e envio de e-mail com a função mail nativa do PHP. Por fim, o helper que eu mais utilizo: o URL helper, para montar URLs absolutas da sua aplicação, por exemplo para carregar imagens ou criação de links.
  • Um outro Helper super útil é o Smiley Helper, para pegar parte dos textos e converter para Smileys. xikin
  • E agora? Qual caminho seguir? gligli
  • www.codeigniter.com , site oficial, contendo a excelente documentação do CodeIgniter, em inglês.
  • Para os que não curtem muito o inglês, também há o site que concentra a comunidade brasileira, incluindo uma lista de discussão bem bacana.
  • CloudIgniter, para você começar a usar CodeIgniter hoje, na nuvem! =D Tenha uma instância do CodeIgniter gratuita rodando na web :) Você pode ter um subdomínio .cloudigniter.com ou pagar uma pequena taxa por mais recursos, incluindo usar um domínio prórprio.
  • Com codeigniter é assim...
  • Dúvidas? Aí estão nossos contatos :)

Apresentacao codeigniter Apresentacao codeigniter Presentation Transcript

  • CodeIgniter Turbinando a produtividade com MVC Francisco Souza @franciscosouza André Tagliati @tagliati
  • Hora de acordar http://www.flickr.com/photos/dominiqs/137546402/
  • quem?
  • Francisco Souza @franciscosouza
  • Francisco Souza @franciscosouza Pior que tá, não fica.
  • Francisco Souza @franciscosouza Pior que tá, não fica. Frase errada, Tiririca!
  • Francisco Souza @franciscosouza Ah, foi mal! Xikin não, mamãe!
  • André Tagliati @tagliati
  • André Tagliati @tagliati Foto de mendigo!
  • Configuração
  • Boa notícia
  • www.codeigniter.com $db['default']['hostname'] = "localhost"; $db['default']['username'] = "root"; $db['default']['password'] = "root"; $db['default']['database'] = "dados"; $db['default']['dbdriver'] = "mysql"; $config['base_url'] = "http://localhost/";
  •  
  • #comofas
  • MVC
  • Modelo
  •  
  • extends Model {
  • extends Model { class Pessoa extends Model { function Pessoa() { parent::Model(); } }
  • Active Record
  • function loadAll(){
  • function loadAll(){ $query = $this -> db -> get( 'pessoas' ); return $query -> result() ;
  • Então no controller $this -> load -> model( 'Pessoa' ); $this -> Pessoa -> loadAll();
  • Legal mas... Pode melhorar?
  • Mas é claro!!!
  •  
  • Controle
  •  
  •  
  •  
  •  
  • extends Controller {
  • extends Controller { class Pessoas extends Controller { // Actions aqui }
  • extends Controller { class Pessoas extends Controller { // Actions aqui } WHAT?!
  • public function index
  • Convention over Configuration
  • meusite.com.br/
  • meusite.com.br/ controller /
  • meusite.com.br/ controller / action /
  • meusite.com.br/ controller / action / parâmetros
  • Visão
  •  
  •  
  • $this -> load -> view( 'hello' );
  • $this -> load -> view( 'hello' );
  • OK.... ...entendi
  • OK.... ...entendi Mas e os
  • É sussa!
  • É sussa! $data[“hello”] = “Oi..”; $this->load->view('hello',$data);
  • É sussa! $data[“hello”] = “Oi..”; $this->load->view('hello',$data); … dai no html
  • É sussa! $data[“hello”] = “Oi..”; $this->load->view('hello',$data); … dai no html... <html> <body> <?php echo $hello;?> </body> </html>
  • … e ainda... $data[“hello”] = “Oi..”; $this->load->view('topo'); $this->load->view('hello',$data); $this->load->view('rodape');
  • … e ainda... $data[“hello”] = “Oi..”; $this->load->view('topo'); $this->load->view('hello',$data); $this->load->view('rodape'); … ou... $this->load->view('hello','', true );
  • … e ainda... $data[“hello”] = “Oi..”; $this->load->view('topo'); $this->load->view('hello',$data); $this->load->view('rodape'); … ou... $this->load->view('hello','', true );
  • Bônus
  • Bônus Raduuuuuuqui
  • Formulários
  • $erros = array(); if (!$_POST['nome']) { $erros[] = 'O campo Nome é requerido.'; } if (!$_POST['email']) { $erros[] = 'O campo E-mail é requerido.'; } else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $erros[] = 'O campo E-mail não é um e-mail válido'; } if (!$POST['mensagem']) { $erros[] = 'O campo Mensagem é requerido.'; } if (!empty($erros)) { $this->load->view('formulario.php', array('erros' => $erros)); }
  • $erros = array(); if (!$_POST['nome']) { $erros[] = 'O campo Nome é requerido.'; } if (!$_POST['email']) { $erros[] = 'O campo E-mail é requerido.'; } else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $erros[] = 'O campo E-mail não é um e-mail válido'; } if (!$POST['mensagem']) { $erros[] = 'O campo Mensagem é requerido.'; } if (!empty($erros)) { $this->load->view('formulario.php', array('erros' => $erros)); } <ul> <?php foreach ($erros as $erro): ?> <li><?php echo $erro; ?></li> <?php endforeach; ?> </ul>
  • Receber torpedo?
  • $this->load->library('form_validation');
  • $this->load->library('form_validation'); $this->form_validation->set_rules('nome', 'Nome', 'required'); $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email'); $this->form_validation->set_rules('mensagem', 'Mensagem', 'required');
  • $this->load->library('form_validation'); $this->form_validation->set_rules('nome', 'Nome', 'required'); $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email'); $this->form_validation->set_rules('mensagem', 'Mensagem', 'required'); $this->form_validation->run();
  • $this->load->library('form_validation'); $this->form_validation->set_rules('nome', 'Nome', 'required'); $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email'); $this->form_validation->set_rules('mensagem', 'Mensagem', 'required'); $this->form_validation->run(); <?php echo validation_errors(); ?>
  •  
  • Messaging http://www.flickr.com/photos/funtik/1175522045/
  • WHAT?!
  • $this->load->library('session'); $this->session->set_flashdata( 'notice', 'Contato enviado com sucesso!' ); WHAT?!
  • É só isso?
  • - Carrinho de compras; - Envio de e-mail; - Criptografia; - Upload de arquivos; - Manipulação de imagens; - Input (tratando dados de formulários, segurança++); - Paginação; - Sessão; - Template parser; - URI; - XML-RPC; - ... codeigniter.com É só isso?
  • - Carrinho de compras; - Envio de e-mail; - Criptografia; - Upload de arquivos; - Manipulação de imagens; - Input (tratando dados de formulários, segurança++); - Paginação; - Sessão; - Template parser; - URI; - XML-RPC; - ... codeigniter.com É só isso? Doidera mano!
  • Helpers
    • Array Helper;
    • Cookie Helper;
    • Date Helper;
    • Download Helper;
    • E-mail Helper;
    • Smiley Helper;
    • URL Helper;
    • ...
    • Array Helper;
    • Cookie Helper;
    • Date Helper;
    • Download Helper;
    • E-mail Helper;
    • Smiley Helper;
    • URL Helper;
    • ...
    :D :) ;)
  • http://www.flickr.com/photos/tambako/999112257/ Onde ir agora?
  • http://www.flickr.com/photos/tambako/999112257/ Onde ir agora? www.codeigniter.com
  • http://www.flickr.com/photos/tambako/999112257/ Onde ir agora? www.codeigniter.com.br www.codeigniter.com
  • http://www.flickr.com/photos/tambako/999112257/ Onde ir agora? www.codeigniter.com.br www.codeigniter.com getcloudigniter.com
  •  
  • André Tagliati @tagliati [email_address] www.tagliati.com.br Francisco Souza @franciscosouza [email_address] www.franciscosouza.com.br http://www.flickr.com/photos/oberazzi/318947873/