Palestra dada por Almir Neto e Otávio Calaça no CONAPHP 2008 - Congresso Nacional de PHP que ocorreu em São Paulo nos dias 18 e 19 de Outubro dentro do CONISLI 2008
1. Desenvolvimento em três camadas
com PHP 5, MVC e AJAX
Almir Neto – almirneto@gmail.com
Otávio Calaça – otaviocx@gmail.com
http://phpendo.blogspot.com
CoNaPHP – CONISLI 2008
http://www.conaphp.com.br/
São Paulo, 18 e 19 de Outubro de 2008
2. Desenvolvimento em três camadas
com PHP 5, MVC e AJAX
Grupo de Desenvolvedores PHP de Goiás
● Lista de Discussão
● Troca de Conhecimentos
● Encontros
● Palestras
● Eventos
● Networking
3. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Roteiro
• Web 2.0
• Orientação a Objetos
• MVC
– Vantagens
– Frameworks
– Camadas
– Estrutura de Diretórios
– Fluxo da Aplicação
• AJAX
– XMLHttpRequest
3
4. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
A ascensão da Web 2.0
• O ápice da Web 1.0
– A mania ponto com
• O estouro da Bolha
– A queda da Bolsa de Valores NASDAQ
• Novos conceitos e novo paradigma para a Web
4
5. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
O que é Web 2.0?
quot;Web 2.0 é a mudança para uma internet como
plataforma, e um entendimento das regras para obter
sucesso nesta nova plataforma. Entre outras, a regra
mais importante é desenvolver aplicativos que
aproveitem os efeitos de rede para se tornarem
melhores quanto mais são usados pelas pessoas,
aproveitando a inteligência coletivaquot;
Tim O'Reilly
5
6. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Regras da Web 2.0
• O beta perpétuo
• A Web é a Plataforma
– O navegador fornece aplicações e não conteúdo
• Interatividade
– Cooperativismo
• Desenvolvimento Modular e Inteligente
6
7. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Paradigmas de Programação
• Programação Estruturada
• Orientação a Objetos
– C++
– Java
– JavaScript
– Perl
– PHP
– Python
– Ruby
– Outras ...
7
8. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Orientação a Objetos
• Conceito
• Classes
• Objetos
• Métodos
• Atributos
8
9. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Orientação a Objetos
• Modificadores de Acesso
– Public
– Private
– Protected
• Palavra-Chave 'final'
9
10. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Orientação a Objetos
• Herança
• Encapsulamento
– getXXX();
– setXXX();
10
11. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
O que é MVC?
• Aplicações Monolíticas
• Aplicações em duas camadas
• MVC (Model-View-Controller)
– Padrão de Arquitetura
– É um conceito
– Fácil manutenção
– Objetivos
– Frameworks
11
12. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Vantagens do MVC
• Reaproveitamento de código
• Facilidade de manutenção
• Integração de equipes e/ou divisão de tarefas
• Camada de Persistência independente
• Implementação de segurança
• Facilidade na alteração da interface da
aplicação
12
13. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Frameworks MVC
• Akelos
• CakePHP
• CodeIgniter
• PHP on Trax
• Prado
• Symphony
• Zend
• Outros ...
13
14. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Camadas
• Model
– Bean
– DAO
– Actions
• View
• Controller
14
15. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Model
• Bean
– Entidade
– Segurança
– Encapsulamento
– Vantagens
15
17. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Model
• DAO – Data Access Object
– Persistência
– Portabilidade
– Independência
– Bibliotecas
• Doctrine
• Propel
• Pear::DB_DataObject
17
23. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Controller
• Segurança
• Controlar fluxo da aplicação
– Inicia e finaliza o fluxo
• Utilização de Web Services
– Interoperabilidade
23
25. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Estrutura de diretórios
• /aplicacao
– controle.php
– /modulo
• /action
• /view
• modulo.php (Bean)
• moduloDAO.php
25
27. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Conclusões sobre o MVC
• Manter o baixo acoplamento
• Evitar regras de negócio no Controller
• Nem tudo em três camadas é MVC
27
28. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
O que é AJAX?
• Requisição Comum
• Outras soluções
– Adobe Flash (Action Script)
– IFrames
• AJAX (Asynchronous Javascript And XML)
– Maior Interação com o Usuário
28
29. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Fluxo na WEB
Sem AJAX Com AJAX
Navegador Navegador
Pag. WEB
Pag. WEB
Servidor da Servidor da
Pag. WEB Aplicação Página Aplicação
WEB da WEB WEB
Pag. WEB
Pag. WEB
Pag. WEB
29
30. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Vantagens do AJAX
• Possibilita estender os eventos até o
servidor;
• Menor tráfego na rede;
• Transparência para o usuário;
• Semelhança com aplicações Desktop.
30
31. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
O Objeto XMLHttpRequest
• Requisição Assincrona;
• Ainda não é uma recomendação
padronizada pela W3C (último Working
Draft data de 15/04/2008);
• Divergências entre navegadores.
31
32. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Principais métodos do XHR
• open(método, URL, async, usuário, senha);
• send(parâmetros);
• abort();
• setRequestHeader(propriedade, valor);
32
33. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Propriedades do XHR
• onreadystatechange
• readyState
• status
• statusText
• responseText
• responseXML
33
34. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
A Resposta
• XML
• HTML
• Script
• Texto
• JSON
34
35. Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Bibliotecas JavaScript
• jQuery
• MooTools
• Prototype
• Dojo
• Rico
• extJS
35