View
2.083
Download
6
Category
Preview:
DESCRIPTION
Slides que usei em minha palestra no Conisli 2011 sobre PHP e CodeIgniter
Citation preview
PHP Turbinado com CodeIgniter
Conisli 2011
05/11/2011
Evaldo Junior
(InFog)
Licença desta apresentação
● CC BY 3.0
– Use
– Compartilhe
– Modifique
– Distribua modificações
● Com duas condições:
– Mantenha os créditos do autor
– Mantenha a mesma licença
Evaldo Junior (InFog)
● Tecnólogo em Processamento de Dados
– FATEC
● Pós – Gestão Estratégica de TI
– Unimonte
● Empreendedor
– CaSoft Tecnologia (http://casoft.info)
● Professor – Unimonte
● GNU/Linux – 6 anos
● Desenvolvedor PHP – 5 anos
● Desenvolvedor CodeIgniter – 2 anos
● GCC-SD
Sobre esta apresentação
● História do PHP● Pontos fortes do PHP● Pontos fracos do PHP● O que é um framework?● CodeIgniter● Ferramentas do CodeIgniter● Turbinando seus aplicativos
História do PHP
Quando não conhecemos a história,estamos fadados à repeti-la.
História do PHP
● Nasceu em 1994● Criada por Rasmus Lerdorf
– Páginas dinâmicas, scripts
● Era chamada de PHP/FI
– Personal Home Pages/Form Interpreter
● Em 1995 se tornou Software Livre● Escrito em C
Um pouco mais de história
● Cresceu muito com a Internet● No fim de 1998:
– PHP: HyperText Preprocessor
– 10% dos domínios da época
– Começou a ser reescrita por Zeev e Andi (Zend Engine)
● Em 2000:
– PHP4
– CLI, Vários servidores HTTP
– 20% dos domínios
Só mais um pouco de história
● Em 2004:
– PHP5
– OO
● 2009:
– PHP 5.3
• Namespaces
O PHP é aberto
● O PHP é Software Livre● Muitos contribuem, no mundo
todo!
– Isso é ótimo!
– Mas isso é ruim =(
● Muitas funções na biblioteca padrão.
– Para quase qualquer necessidade.
– Falta padronização
PHP é fácil
● Simples de aprender
● Uma faca de dois gumes...
– 08:00h:
• Comecei a aprender PHP! Que legal!
– 11:15h:
• Ok, já sei PHP.
– 15:37h:
• Fechei meu primeiro “freela” com PHP =D
WEB + PHP = Fácil
● Fácil, fácil, fácil!● PHP nasceu para a web;● Não é necessário muita coisa:
– HTTP (Apache)
– PHP
– SGBD (MySQL, opcional)
• Basta escrever, colocar na raiz do apache e tadá!
Espanto.
Já sou um hacker PHP!
Mas com o tempo.
● Os softwares começam a crescer sem estrutura;
● Começa a repetição de rotinas;● A mistura de PHP, HTML,
JavaScript e CSS fica mais complexa;
● Erros aparecem, e é difícil encontrá-los
● Código espaguete
Fica impossível de manter!
Ok, hora de estudar
● Problemas mais complexos podem exigir soluções mais SIMPLES!
● Padrões de projeto.
– MVC
● Guia de estilos.● Estrutura.● Classes e componentes.● Padrões.
E se.
● O trabalho aumentar?● Entrar alguém na
equipe?● Passar o projeto
adiante?
– Documentação
– Padronização
– Reconhecimento
O cara foi embora enão conhecemos aestrutura que ele
mesmo inventou...
O que faremos?
Alguma solução?
Ouvi dizer queum frameworkajuda bastante
na padronizaçãoe já tem muitas
ferramentasprontas.
Também já ouvialgo sobre isso.
Mas existem tantosframeworks PHP
por aí...
Framework?
● Seguem padrões● (Em geral) são bem
documentados● Muitos desenvolvedores os
conhecem● Existem livros sobre alguns deles● Já incluem várias soluções para
os problemas mais comuns● Ajudam a abstrair algumas partes
do projeto.
CodeIgniter
● Ellislab, Inc.● Base do Expression Engine;● Código aberto;
– Um toolkit para desenvolver aplicações web de forma muito mais rápida do que escrever código do zero.
● http://codeigniter.com
CodeIgniter
● MVC;● Simples;● Rápido;● Flexível;● URLs amigáveis;● Bom para iniciantes em frameworks;
– E é facilmente adaptável para os experientes.
● Licença livre;● Documentação muito completa (Sério).
Uma pausa para o MVC
● Model, View e Controller;
Dispatcher e RoutesNão fazem parte do MVC
Pode serqualquerSGDB
CodeIgniter
● Recursos● Arquitetura (metas)● Fluxo da Aplicação● URLs;
– Controllers
– Métodos
– Parâmetros
● Helpers e Libraries● Abstração do acesso ao banco
Recursos
● Model-View-Controller
● Extremamente leve
● Classe para banco de dados com suporte a vários SGBDs
● Validação de forms
● Filtro contra XSS e CSRF
● Gestão de Sessões
● Classe para envio de e-mails (formatação html, anexos, etc)
● Manipulação de imagens
● Envio de arquivos
● Paginação
● Cache
● Log de erros
● Sistema de templates
● Biblioteca XML-RPC
● Classe para Testes Unitários
● URLs amigáveis
● Sistema de rotas flexíveis
● Hooks e extensões de classes
● Muitos, muitos helpers
Arquitetura (metas)
● Instanciação Dinâmica
– Vai usar? Carrega!
– Não vai? Nem toca!
● Acoplamento Fraco
– As partes devem ser independentes, ou o mais próximo disso o possível.
● Singularidade de Componentes
– Cada componente faz a sua parte e faz o melhor que pode.
– Evita ao máximo repetir funcionalidades
Fluxo de uma aplicação
Um detalhe importante
Chinês
Mas como ele facilita as coisas?
● Padronização!● Documentação● Organização
– Onde alterar?
– Onde adicionar?
– Onde procurar os problemas?
URLs do CI
● www.meusite.com/produtos/destaques/mobile
ROXO: Um controller (uma classe)
VERDE: Método
AZUL: Parâmetros para o método
Helpers
● São os “ajudantes”● São basicamente um conjunto de
funções● Os arquivos ficam em
“system/helpers”.● Existem helpers para muitas
funções:
– Captcha, datas, e-mail, arquivos, forms, html, segurança, URLs...
Libraries
● São classes● Também são ajudantes● Em geral reúnem funcionalidades que se
encaixam melhor na OO e não como funções separadas.
● Os arquivos ficam em “system/libraries”
Sparks!
● Sistema de módulos/pacotes para o CodeIgniter
● Integração com diversas bibliotecas
– Doctrine, oAuth, MongoDB
● Fica separado da aplicação
Qer aprender mais?
● Site oficial:
– http://codeigniter.com
● Comunidades● Livros● Cursos
– Turbine-se com CodeIgniter
– turbinesecomcodeigniter.com.br
Perguntas?
Obrigado!
Meus contatos● @InFog9● junior@casoft.info ● infog.casoft.info
Recomendo:● @casoft● @turbinese
Recommended