programação orientada a aspectos em php
DESCRIPTION
Palestra realizada no Serpro PHP Day, no dia 1º de junho de 2011, na regional Curitiba do Serpro.TRANSCRIPT
![Page 1: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/1.jpg)
Programacao Orientada a Aspectos
Programacao Orientada a Aspectos
Wesley Klewerton
PHP-Day SERPRO Curitiba
01 de Junho de 2011
![Page 2: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/2.jpg)
Programacao Orientada a Aspectos
Agenda
Agenda
1 Apresentacao
2 Introducao
3 Interesses Transversais
4 Programacao Orientada a Aspectos (POA)
5 Mecanismos POA
6 E na pratica?
7 Fim
![Page 3: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/3.jpg)
Programacao Orientada a Aspectos
Apresentacao
Wesley Klewerton
Short Bio
Graduado em Sistemas de Informacao, 2 especializacoes,Mestrando em Informatica pela UFPR (Enfase em Engenharia deSoftware - Teste de Software), desenvolvedor PHP desde 2004,colaborador do time de traducao da documentacao do CakePHP,participante da traducao do Ubuntu, e por ai vai...
Contatos
Email: [email protected]
Twitter: @wesleyklewerton
Blog: www.wesleyk.com
![Page 4: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/4.jpg)
Programacao Orientada a Aspectos
Introducao
Evolucao da Programacao
![Page 5: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/5.jpg)
Programacao Orientada a Aspectos
Introducao
Programacao Orientada a Objetos (POO)
Vantagens
Modelo de Negocios
Abstracao
Encapsulamento
Reuso de Componentes
Padroes
Facilidade de Manutencao
![Page 6: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/6.jpg)
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo ilustrativo
![Page 7: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/7.jpg)
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo ilustrativo - Interesses Transversais
![Page 8: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/8.jpg)
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo ilustrativo - Interesses Transversais
Sintomas
Nao sao tratados pelos mecanismos da POO
Geram dois tipos de fenomenos:
EspalhamentoEmaranhado
Dificuldades
Entendimento
Reuso
Manutencao
Evolucao
![Page 9: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/9.jpg)
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo Real - Apache Tomcat
XML parsing in org.apache.tomcat
![Page 10: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/10.jpg)
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo Real - Apache Tomcat
Logging in org.apache.tomcat
![Page 11: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/11.jpg)
Programacao Orientada a Aspectos
Interesses Transversais
Interesses Transversais
Onde sao encontrados?
Persistencia
Auditoria (logs)
Controle de excecoes
etc...
Como podem ser otimizados?
???
![Page 12: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/12.jpg)
Programacao Orientada a Aspectos
Programacao Orientada a Aspectos (POA)
Programacao Orientada a Aspectos (POA)
Procura modularizar os interesses transversais em unidadeschamadas de Aspectos.
Surgir em 1997 no Xerox Palo Alto Research Center,laboratorio de pesquisas da Xerox.
E uma extensao da POO (codigo base) com mecanismos para lidarcom interesses transversais.
![Page 13: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/13.jpg)
Programacao Orientada a Aspectos
Programacao Orientada a Aspectos (POA)
Exemplo ilustrativo - Interesses Transversais
![Page 14: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/14.jpg)
Programacao Orientada a Aspectos
Programacao Orientada a Aspectos (POA)
Exemplo Ilustrativo - Aspectos
Inversao das dependencias
![Page 15: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/15.jpg)
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Joinpoints
Instrucoes no fluxo doprograma:
1 Execucao de Metodo
2 Acesso a atributo
3 Construcao de objeto
4 Controle de excecao
5 Destruicao de objeto
![Page 16: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/16.jpg)
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Pointcuts
Utiliza os Joinpoints para especificar pontos no programaonde sera introduzida determinada logica
Wildcards (Coringas)
* Todos existentes new *(*)
+ Todos com subclasses call(Book+->update(2))
|| “ou”para combinar before JPa, JPb{...}
![Page 17: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/17.jpg)
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Advices
Introduz (injeta) codigo nos Pointcuts
3 tipos principais:
BeforeAroundAfter
![Page 18: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/18.jpg)
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Inter-type Declaration
Introduz membros em unidades(classes/aspectos) existentes
Membros sao:
1 Atributos2 Constantes3 Metodos
![Page 19: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/19.jpg)
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Waver
Junta os aspectos com o codigo base para gerar arquivosunicos que forma o programa final funcional.
![Page 20: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/20.jpg)
Programacao Orientada a Aspectos
E na pratica?
E na pratica?
Como posso fazer isso funcionar?
![Page 21: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/21.jpg)
Programacao Orientada a Aspectos
E na pratica?
E na pratica?
APDT: Aspect PHP Developement Tools
http://code.google.com/p/apdt/
Plugin para eclipse que oferece uma plataforma para POAcom PHP. Integra as ferramentas de desenvolvimento PHP doeclipse (PDT) com a biblioteca PHPAspect e um PHPAspectWaver
![Page 22: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/22.jpg)
Programacao Orientada a Aspectos
E na pratica?
E na pratica?
![Page 23: Programação Orientada a Aspectos em PHP](https://reader030.vdocuments.site/reader030/viewer/2022020105/5596a1811a28ab41718b48ba/html5/thumbnails/23.jpg)
Programacao Orientada a Aspectos
Fim
Fim
Perguntas?