2. 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
3. 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
4. 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
6. 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
7. 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
8. Só mais um pouco de história
● Em 2004:
– PHP5
– OO
● 2009:
– PHP 5.3
• Namespaces
9. 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
10. 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
11. 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á!
13. 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
15. 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.
16. E se.
O cara foi embora e
não conhecemos a
● O trabalho aumentar?
estrutura que ele
mesmo inventou...
● Entrar alguém na
equipe?
O que faremos?
● Passar o projeto
adiante?
– Documentação
– Padronização
– Reconhecimento
17. Alguma solução?
Ouvi dizer que
um framework
ajuda bastante
na padronização
e já tem muitas
ferramentas
prontas.
Também já ouvi
algo sobre isso.
Mas existem tantos
frameworks PHP
por aí...
18. 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.
19. 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
20. 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).
21. Uma pausa para o MVC
● Model, View e Controller;
Pode ser
qualquer
SGDB
Dispatcher e Routes
Não fazem parte do MVC
22. CodeIgniter
● Recursos
● Arquitetura (metas)
● Fluxo da Aplicação
● URLs;
– Controllers
– Métodos
– Parâmetros
● Helpers e Libraries
● Abstração do acesso ao banco
23. Recursos
● Model-View-Controller ● Paginação
● Extremamente leve ● Cache
● Classe para banco de ● Log de erros
dados com suporte a
vários SGBDs
● Sistema de templates
● Validação de forms
● Biblioteca XML-RPC
● Filtro contra XSS e
● Classe para Testes
CSRF Unitários
● Gestão de Sessões
● URLs amigáveis
● Classe para envio de e-
● Sistema de rotas
mails (formatação html, flexíveis
anexos, etc) ● Hooks e extensões de
● Manipulação de imagens classes
● Envio de arquivos
● Muitos, muitos helpers
24. 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
27. Mas como ele facilita as coisas?
● Padronização!
● Documentação
● Organização
– Onde alterar?
– Onde adicionar?
– Onde procurar os
problemas?
28. URLs do CI
● www.meusite.com/produtos/destaques/mobile
ROXO: Um controller (uma classe)
VERDE: Método
AZUL: Parâmetros para o método
29. 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...
30. 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”
31. Sparks!
● Sistema de módulos/pacotes para o
CodeIgniter
● Integração com diversas bibliotecas
– Doctrine, oAuth, MongoDB
● Fica separado da aplicação