SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
MVC com Zend Framework
Flávio Gomes da Silva Lisboa
@fgsl
www.fgsl.eti.br
@fgsl
A reprodução é livre, apenas cite a fonte
Mickey, Donald Duck & Goofy by Walt Disney
Quem sou eu
2007
2008 2009
A reprodução é livre, apenas cite a fonte
@fgsl
Aplicações...
A reprodução é livre, apenas cite a fonte
@fgsl
serventedepedreiro2.blogspot.com
Aplicações...Web
A reprodução é livre, apenas cite a fonte
@fgsl
adrformacion.com
tareadeinformatica-julia.blogspot.com
altecnet.com.br
freecoloringsheets.net
Momento Cultural
A reprodução é livre, apenas cite a fonte
@fgsl
A reprodução é livre, apenas cite a fonte
@fgsl
Aplicações são como cebolas...
Shrek by Dreamworks
Cebolinha by Maurício de Sousa
hortifrutibrasil.blogspot.com
A reprodução é livre, apenas cite a fonte
@fgsl
… elas têm camadas!
mais-objetiva.blogspot.com
A reprodução é livre, apenas cite a fonte
@fgsl
Mas pra quê camadas?
manequim.abril.com.br
copacabanadetoledo.blogger.com.br
A reprodução é livre, apenas cite a fonte
@fgsl
O que são camadas?
Martin Fowler
camadas são “os subsistemas
principais no software
dispostos de forma parecida
com camadas de um bolo,
em que cada camada repousa
sobre uma camada mais
baixa”
A reprodução é livre, apenas cite a fonte
@fgsl
Vantagens de usar camadas
►Compreensão de uma única camada como um todo
coerente sem necessidade de saber muito sobre as demais
camadas.
►Uma camada pode ser substituída por implementações
alternativas dos mesmos serviços básicos.
►O uso de camadas diminui a dependência entre as partes
de um sistema
►Camadas são bons lugares para definir padrões.
►Uma vez construída, uma camada pode ser usada por
muitos serviços de nível mais alto.
A reprodução é livre, apenas cite a fonte
@fgsl
Camadas de uma aplicação
Recursos Externos
Objetos de acesso a dados
Mapeadores, repositórios
e scritps de transação
Modelos de domínio
e Entidades
Controle de fluxo
da aplicação
Apresentação
ou exposição de serviço
A reprodução é livre, apenas cite a fonte
@fgsl
E pra quê tudo isso?
Porque só
existe uma
certeza no
mundo do
software...
A reprodução é livre, apenas cite a fonte
@fgsl
O cliente vai pedir alterações...
Eu te amo, você é perfeito...
...mas quero que você mude.
Fonte: http://2.bp.blogspot.com/_UM47dm0ECOE/SK1mPgTEzaI/AAAAAAAAAo8/yf2scl7XEQ4/s400/amor+meu+grande+amor.jpg
A reprodução é livre, apenas cite a fonte
@fgsl
O cliente vai pedir mais alterações...
Mas fizemos um sistema que funciona, o cliente
disse que estava ótimo... e agora temos que fazer
mais alterações?
Fonte: http://galeria.brfoto.com.br/data/1/choro_sem_cor.jpg
@fgsl
A reprodução é livre, apenas cite a fonte
RESISTIR É INÚTIL!
@fgsl
A reprodução é livre, apenas cite a fonte
RESISTIR É INÚTIL!
@fgsl
A reprodução é livre, apenas cite a fonte
RESISTIR É INÚTIL!
@fgsl
A reprodução é livre, apenas cite a fonte
RESISTIR É INÚTIL!
Se a mudança é a única certeza, a questão é:
Como mudar da melhor forma possível?
matutando.com
@fgsl
A reprodução é livre, apenas cite a fonte
Melhor mudança
●Custa pouco
●Leva menos tempo
●Cria o menor impacto na aplicação
Fonte: http://aliceprina.files.wordpress.com/2007/09/mudanca-web2.jpg
@fgsl
A reprodução é livre, apenas cite a fonte
Práticas que dificultam mudanças
Criação de objetos pela especificação explícita
de uma classe.
Dependências de uma plataforma de hardware e
software específica.
Dependência de algoritmos específicos.
Acoplamento forte de classes.
@fgsl
A reprodução é livre, apenas cite a fonte
Tempo
Algo que você já não tem
Algo que você cada dia tem menos
taocentro.blogspot.com
oitopassos.com
@fgsl
A reprodução é livre, apenas cite a fonte
Complexidade
Algo que só tende a aumentar
@fgsl
A reprodução é livre, apenas cite a fonte
Por isso, não invente!
eladioebruna.blogspot.com
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
mosaico.blogs.ie
dvdnear.com
produto.mercadolivre.com.br
19371973
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
He-Man, Skeletor and Battle Cat by Mattel
De novo
essa
cena?
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
ivancarlo.blogspot.com fortressofbaileytude.com
John Byrne - 1980 George Pérez - 1985
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
http://www.coverbrowser.com/top/cool
John Buscema - 1968 John Byrne - 1989
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
http://www.interney.net/blogs/melhoresdomundo/2008/05/21/alex_ross_chupinha_de_novo
Capas de
John Byrne
@fgsl
A reprodução é livre, apenas cite a fonte
Reutilização
“O movimento para o
desenvolvimento baseado
em reuso foi uma resposta
às demandas por menores
custos de produção e
manutenção de software,
entregas mais rápidas de
sistemas e aumento da
qualidade do software”.
Ian Sommerville
@fgsl
A reprodução é livre, apenas cite a fonte
De código
De desenho
010101011101101010101
111010010110110010101
010110101110101010101
001011111010110101010
110101010000011111001
011111010000110101010
101011110010101010100
011101010101010101110
001110101010101010101
010110101010101011111
Nonono
nonnon
nonono
nononno
Tipos de Reutilização
@fgsl
A reprodução é livre, apenas cite a fonte
Tipos de Reutilização
De objetos, quando módulos de código binário
de interface padronizada são reaproveitados;
De classes, o reaproveitamento de classes
fundamentais e bibliotecas-padrão;
De plataformas, que se refere ao
reaproveitamento de camadas inteiras da
arquitetura de uma aplicação.
@fgsl
A reprodução é livre, apenas cite a fonte
Padrões
“Padrões para componentes
reusáveis facilitam o reuso”
@fgsl
A reprodução é livre, apenas cite a fonte
Padrões
“Padrão é uma maneira de fazer algo, ou de
buscar um objetivo. Em qualquer atividade que já
esteja madura ou em vias de amadurecer,
encontraremos métodos eficazes comuns para
atingir objetivos e para resolver problemas em
vários contextos”
Steven John Metsker
@fgsl
A reprodução é livre, apenas cite a fonte
Padrões
Reduzem a complexidade, fornecendo
abstrações prontas;
Reduzem os erros, institucionalizando os
detalhes de soluções comuns;
Fornecem valor heurístico, sugerindo
alternativas de design;
Otimizam a comunicação, movendo o
diálogo do projeto para um nível mais alto.
Steve McConnell
@fgsl
A reprodução é livre, apenas cite a fonte
MVC é um padrão de projeto
symfony-project.org
Mas as camadas
não tem que estar
uma em cima da
outra?
Não necessariamente.
A reprodução é livre, apenas cite a fonte
@fgsl
MVC é só a ponta do iceberg...
Recursos Externos
Objetos de acesso a dados
Mapeadores, repositórios
e scritps de transação
Modelos de domínio
e Entidades
Controle de fluxo
da aplicação
Apresentação
ou exposição de serviço
M
C
V
A reprodução é livre, apenas cite a fonte
@fgsl
Não se engane com a figura!
Não tem só 1 modelo, 1 visão e 1 controlador.
A reprodução é livre, apenas cite a fonte
@fgsl
Tem mais coisa!
N
N
N
A reprodução é livre, apenas cite a fonte
@fgsl
Uma aplicação tem vários problemas...
...por isso precisa de vários padrões de projeto
Justile League of America, by DC Comics
A reprodução é livre, apenas cite a fonte
@fgsl
Software Baseado em Padrão
Para viabilizar o projeto de
software baseado em
padrão, “pode ser
necessário fornecer uma
infraestrutura do esqueleto
de implementação
específica, chamada de
arcabouço (framework)”.
Roger S. Pressman
A reprodução é livre, apenas cite a fonte
@fgsl
Framework
“O framework dita a arquitetura de
sua aplicação. Ele irá definir a
estrutura geral, sua divisão em
classes e objetos e em consequência
as responsabilidades-chave das
classes de objetos, como estas
colaboram, e o fluxo de controle.
Um framework predefine esses
parâmetros de projeto, de maneira
que o projetista ou implementador da
aplicação, possa se concentrar nos
aspectos específicos da mesma”.
(Gangue dos Quatro)
Royal Flush Gang, by DC Comics
Gangue dos Quatro
A reprodução é livre, apenas cite a fonte
@fgsl
Inversão de Controle
A reprodução é livre, apenas cite a fonte
@fgsl
Inversão de Controle
A inversão de controle estabelece a diferença
entre toolkits ou bibliotecas de sub-rotinas e
frameworks. Nas primeiras, o desenvolvedor
escreve o corpo principal da aplicação e chama o
código que quer reutilizar. No último, o
desenvolvedor reutiliza o corpo principal e
escreve o código que o framework chama.
A reprodução é livre, apenas cite a fonte
@fgsl
Criação de objetos de forma indireta.
Não depende de uma plataforma de hardware e
software específica (é PHP né? Dooh!).
Não depende de suas próprias implementações.
Acoplamento fraco de classes.
A reprodução é livre, apenas cite a fonte
@fgsl
desciclopedia.org
Zend
Db
Zend
Service
Zend
Soap
Zend
Rest
Zend
XmlRpc
Zend
Controller
Page
Zend
Controller
Front
Controller, Marvel Comics
Zend
View
Zend
Layout
Vision, Marvel Comics
A reprodução é livre, apenas cite a fonte
@fgsl
Zend
Controller
Front
Zend
Application
Zend
Config
Ini
Xml
Boostrap
Inicialização
Configuração
A reprodução é livre, apenas cite a fonte
@fgsl
Zend
Tool
Geração de código
A reprodução é livre, apenas cite a fonte
@fgsl
Além do MVC...
►Action Helpers
►View Helpers
►Plugins
►ViewRenderer
►Router
Spiderman, Marvel Comics
Doctor Strange, Marvel Comics
A reprodução é livre, apenas cite a fonte
@fgsl
Banco de Dados
►Zend_Db: Abstração da conexão com o banco
►Zend_Db_Statement: Consultas armazenadas
►Zend_Db_Select: SQL orientada a objeto
►Zend_Db_Table: Padrões Data Row Gateway, Data Table
Gateway, Data Mapper e Active Record.
vamoganhargalo.blogspot.com
oculistasoloptica.com
A reprodução é livre, apenas cite a fonte
@fgsl
Segurança
►Zend_Acl: Controle de Acesso
►Zend_Auth, Zend_Oauth e
Zend_OpenId: Autenticação
►Zend_Filter: Conversores de dados
►Zend_Captcha: Anti-robô
►Zend_Log:Auditoria
►Zend_Validate: Regras de validação
bahianoticias.com.br
A reprodução é livre, apenas cite a fonte
@fgsl
Diagnóstico e Manutenção
►Zend_Debug
►Zend_Log
antigo.campinas.sp.gov.br
A reprodução é livre, apenas cite a fonte
@fgsl
Formulários Dinâmicos
►Zend_Form
Suporte a filtros, validadores, grupos, subformulários,
configuração por arquivo e internacionalização.
Superman & Flash, DC Comics
es.gov.br
A reprodução é livre, apenas cite a fonte
@fgsl
Infraestrutura
►Zend_Config: Configuração por arquivos INI ou XML
►Zend_Exception: Exceção padrão
►Zend_Loader: Carregamento de classes e arquivos
►Zend_Registry: Variáveis globais
►Zend_Session: Controle da sessão
►Zend_Version: Adivinhe...
blogisticanoticias.blogspot.com
A reprodução é livre, apenas cite a fonte
@fgsl
Performance
►Zend_Cache
►Zend_Config
►Zend_Loader
►Zend_Memory
brickset.com
A reprodução é livre, apenas cite a fonte
@fgsl
Internacionalização
►Zend_Date
►Zend_Currency
►Zend_Locale
►Zend_Translate
blogalize.net
A reprodução é livre, apenas cite a fonte
@fgsl
E-mail
►Zend_Mail
frutobrasil.com.br
A reprodução é livre, apenas cite a fonte
@fgsl
Sistema de Busca
►Zend_Search_Lucene
baseado em
A reprodução é livre, apenas cite a fonte
@fgsl
Integração com
Flash Player
►Zend_Amf
A reprodução é livre, apenas cite a fonte
@fgsl
Integração com
Dojo Toolkit
►Zend_Dojo
A reprodução é livre, apenas cite a fonte
@fgsl
Integração com JQuery
►ZendX_JQuery
A reprodução é livre, apenas cite a fonte
@fgsl
Integração com PHPUnit
►Zend_Test
blog.censanet.com.brkavorka.wordpress.com
A reprodução é livre, apenas cite a fonte
@fgsl
Computação em Nuvem
Zend_Cloud
Zend_Service
kayllanyketly.blogspot.com
A reprodução é livre, apenas cite a fonte
@fgsl
E muito mais...
massageandoocerebro.wordpress.com
A reprodução é livre, apenas cite a fonte
@fgsl
Ah, mas o outro
framework
suporta PHP 4...
Chatotorix, de René Goscinny e Albert Uderzo
A reprodução é livre, apenas cite a fonte
@fgsl
Obrigado!
A reprodução é livre, apenas cite a fonte
@fgsl
www.fgsl.eti.br
Little Einsteins by Walt Disney

Mais conteúdo relacionado

Destaque

Mini crne rupe u CERN/u
Mini crne rupe u CERN/uMini crne rupe u CERN/u
Mini crne rupe u CERN/uSEENET-MTP
 
Everton Campeon 1976
Everton Campeon 1976Everton Campeon 1976
Everton Campeon 1976BARRATA
 
Life After A Bank Run: The Bangko Kabayan Experience
Life After A Bank Run: The Bangko Kabayan ExperienceLife After A Bank Run: The Bangko Kabayan Experience
Life After A Bank Run: The Bangko Kabayan ExperienceMABSIV
 
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.TxtHealth In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txtdrsprasadi
 
Palestra Dojo Toolkit Consegi 2011
Palestra Dojo Toolkit Consegi 2011Palestra Dojo Toolkit Consegi 2011
Palestra Dojo Toolkit Consegi 2011Flávio Lisboa
 
Aumento da tarifa de ônibus em curitiba
Aumento da tarifa de ônibus em curitibaAumento da tarifa de ônibus em curitiba
Aumento da tarifa de ônibus em curitibaProfessora Josete
 
Inspirerend Amsterdams voorbeeld: Brede School De Kleine Reus
Inspirerend Amsterdams voorbeeld: Brede School De Kleine ReusInspirerend Amsterdams voorbeeld: Brede School De Kleine Reus
Inspirerend Amsterdams voorbeeld: Brede School De Kleine ReusStipo
 
South haven park district
South haven park districtSouth haven park district
South haven park districtArvin Alpuerto
 
Uitkomsten onderzoek online gebruiken
Uitkomsten onderzoek online gebruikenUitkomsten onderzoek online gebruiken
Uitkomsten onderzoek online gebruikenLECTRIC
 
Sensitivity analysis
Sensitivity analysisSensitivity analysis
Sensitivity analysisSasquatch S
 
Andy Jarvis Parasid Near Real Time Monitoring Of Habitat Change Using A Neura...
Andy Jarvis Parasid Near Real Time Monitoring Of Habitat Change Using A Neura...Andy Jarvis Parasid Near Real Time Monitoring Of Habitat Change Using A Neura...
Andy Jarvis Parasid Near Real Time Monitoring Of Habitat Change Using A Neura...CIAT
 
Cronograma. 11ª conf. mun. de saúde
Cronograma. 11ª conf. mun. de saúdeCronograma. 11ª conf. mun. de saúde
Cronograma. 11ª conf. mun. de saúdeProfessora Josete
 
Informe Afganos En Peshawar
Informe Afganos En PeshawarInforme Afganos En Peshawar
Informe Afganos En PeshawarFACTUAL
 
#SMTulsa Social Media Summit by Cheryl Lawson
#SMTulsa Social Media Summit by Cheryl Lawson#SMTulsa Social Media Summit by Cheryl Lawson
#SMTulsa Social Media Summit by Cheryl LawsonCheryl Lawson
 

Destaque (20)

Mini crne rupe u CERN/u
Mini crne rupe u CERN/uMini crne rupe u CERN/u
Mini crne rupe u CERN/u
 
Everton Campeon 1976
Everton Campeon 1976Everton Campeon 1976
Everton Campeon 1976
 
Life After A Bank Run: The Bangko Kabayan Experience
Life After A Bank Run: The Bangko Kabayan ExperienceLife After A Bank Run: The Bangko Kabayan Experience
Life After A Bank Run: The Bangko Kabayan Experience
 
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.TxtHealth In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
 
Finding Job Leads
Finding Job LeadsFinding Job Leads
Finding Job Leads
 
Palestra Dojo Toolkit Consegi 2011
Palestra Dojo Toolkit Consegi 2011Palestra Dojo Toolkit Consegi 2011
Palestra Dojo Toolkit Consegi 2011
 
Krysztof smolana fotos
Krysztof smolana fotosKrysztof smolana fotos
Krysztof smolana fotos
 
Aumento da tarifa de ônibus em curitiba
Aumento da tarifa de ônibus em curitibaAumento da tarifa de ônibus em curitiba
Aumento da tarifa de ônibus em curitiba
 
Inspirerend Amsterdams voorbeeld: Brede School De Kleine Reus
Inspirerend Amsterdams voorbeeld: Brede School De Kleine ReusInspirerend Amsterdams voorbeeld: Brede School De Kleine Reus
Inspirerend Amsterdams voorbeeld: Brede School De Kleine Reus
 
South haven park district
South haven park districtSouth haven park district
South haven park district
 
Uitkomsten onderzoek online gebruiken
Uitkomsten onderzoek online gebruikenUitkomsten onderzoek online gebruiken
Uitkomsten onderzoek online gebruiken
 
Projecto plano nacional
Projecto plano nacionalProjecto plano nacional
Projecto plano nacional
 
Sensitivity analysis
Sensitivity analysisSensitivity analysis
Sensitivity analysis
 
Andy Jarvis Parasid Near Real Time Monitoring Of Habitat Change Using A Neura...
Andy Jarvis Parasid Near Real Time Monitoring Of Habitat Change Using A Neura...Andy Jarvis Parasid Near Real Time Monitoring Of Habitat Change Using A Neura...
Andy Jarvis Parasid Near Real Time Monitoring Of Habitat Change Using A Neura...
 
Cronograma. 11ª conf. mun. de saúde
Cronograma. 11ª conf. mun. de saúdeCronograma. 11ª conf. mun. de saúde
Cronograma. 11ª conf. mun. de saúde
 
Informe Afganos En Peshawar
Informe Afganos En PeshawarInforme Afganos En Peshawar
Informe Afganos En Peshawar
 
#SMTulsa Social Media Summit by Cheryl Lawson
#SMTulsa Social Media Summit by Cheryl Lawson#SMTulsa Social Media Summit by Cheryl Lawson
#SMTulsa Social Media Summit by Cheryl Lawson
 
Sida
SidaSida
Sida
 
Img
ImgImg
Img
 
Frank locker fotos
Frank locker fotosFrank locker fotos
Frank locker fotos
 

Semelhante a MVC com Zend Framework - PHP Conference Brasil 2010

Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010Flávio Lisboa
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 
Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Flávio Lisboa
 
8 motivos-para-usar-o-yii2
8 motivos-para-usar-o-yii28 motivos-para-usar-o-yii2
8 motivos-para-usar-o-yii2Renato Lucena
 
Traits no PHP 5.4: muito além da herança
Traits no PHP 5.4: muito além da herançaTraits no PHP 5.4: muito além da herança
Traits no PHP 5.4: muito além da herançaFlávio Lisboa
 
MVC com Zend Framework
MVC com Zend FrameworkMVC com Zend Framework
MVC com Zend FrameworkFlávio Lisboa
 
Rodada do conhecimento - Novos padrões web da KBR Tec
Rodada do conhecimento - Novos padrões web da KBR TecRodada do conhecimento - Novos padrões web da KBR Tec
Rodada do conhecimento - Novos padrões web da KBR TecPaullo Norato
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019Cassio Santos
 
Palestra Zend Framework CONAPHP CONISLI
Palestra Zend Framework CONAPHP CONISLIPalestra Zend Framework CONAPHP CONISLI
Palestra Zend Framework CONAPHP CONISLIFlávio Lisboa
 
Componentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkComponentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkFlávio Lisboa
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teachingpichiliani
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosFlávio Lisboa
 
Programação Eficaz - Agile Trends Floripa 2016
Programação Eficaz -  Agile Trends Floripa 2016Programação Eficaz -  Agile Trends Floripa 2016
Programação Eficaz - Agile Trends Floripa 2016Taller Negócio Digitais
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosFabio Kon
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Better Developer
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores RubyEric Hideki
 

Semelhante a MVC com Zend Framework - PHP Conference Brasil 2010 (20)

Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016
 
8 motivos-para-usar-o-yii2
8 motivos-para-usar-o-yii28 motivos-para-usar-o-yii2
8 motivos-para-usar-o-yii2
 
Traits no PHP 5.4: muito além da herança
Traits no PHP 5.4: muito além da herançaTraits no PHP 5.4: muito além da herança
Traits no PHP 5.4: muito além da herança
 
MVC com Zend Framework
MVC com Zend FrameworkMVC com Zend Framework
MVC com Zend Framework
 
Rodada do conhecimento - Novos padrões web da KBR Tec
Rodada do conhecimento - Novos padrões web da KBR TecRodada do conhecimento - Novos padrões web da KBR Tec
Rodada do conhecimento - Novos padrões web da KBR Tec
 
Php corporativo
Php corporativoPhp corporativo
Php corporativo
 
PHP: Evolução
PHP: EvoluçãoPHP: Evolução
PHP: Evolução
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
 
Palestra Zend Framework CONAPHP CONISLI
Palestra Zend Framework CONAPHP CONISLIPalestra Zend Framework CONAPHP CONISLI
Palestra Zend Framework CONAPHP CONISLI
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
Componentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkComponentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada framework
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teaching
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
 
Programação Eficaz - Agile Trends Floripa 2016
Programação Eficaz -  Agile Trends Floripa 2016Programação Eficaz -  Agile Trends Floripa 2016
Programação Eficaz - Agile Trends Floripa 2016
 
GoF.ppt
GoF.pptGoF.ppt
GoF.ppt
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a Objetos
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores Ruby
 

Mais de Flávio Lisboa

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPFlávio Lisboa
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasFlávio Lisboa
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework LaminasFlávio Lisboa
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?Flávio Lisboa
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamFlávio Lisboa
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasFlávio Lisboa
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadoresFlávio Lisboa
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)Flávio Lisboa
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Flávio Lisboa
 
Desenvolvimento Orientado a API (e extraindo existentes com PHP)
Desenvolvimento Orientado a API (e extraindo existentes com PHP)Desenvolvimento Orientado a API (e extraindo existentes com PHP)
Desenvolvimento Orientado a API (e extraindo existentes com PHP)Flávio Lisboa
 
API PHP para blockchain
API PHP para blockchainAPI PHP para blockchain
API PHP para blockchainFlávio Lisboa
 

Mais de Flávio Lisboa (20)

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHP
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com Laminas
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com método
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework Laminas
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
 
Amanhecer esmeralda
Amanhecer esmeraldaAmanhecer esmeralda
Amanhecer esmeralda
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadores
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)
 
Desenvolvimento Orientado a API (e extraindo existentes com PHP)
Desenvolvimento Orientado a API (e extraindo existentes com PHP)Desenvolvimento Orientado a API (e extraindo existentes com PHP)
Desenvolvimento Orientado a API (e extraindo existentes com PHP)
 
API PHP para blockchain
API PHP para blockchainAPI PHP para blockchain
API PHP para blockchain
 

MVC com Zend Framework - PHP Conference Brasil 2010

  • 1. MVC com Zend Framework Flávio Gomes da Silva Lisboa @fgsl www.fgsl.eti.br @fgsl A reprodução é livre, apenas cite a fonte Mickey, Donald Duck & Goofy by Walt Disney
  • 2. Quem sou eu 2007 2008 2009 A reprodução é livre, apenas cite a fonte @fgsl
  • 3. Aplicações... A reprodução é livre, apenas cite a fonte @fgsl serventedepedreiro2.blogspot.com
  • 4. Aplicações...Web A reprodução é livre, apenas cite a fonte @fgsl adrformacion.com tareadeinformatica-julia.blogspot.com altecnet.com.br freecoloringsheets.net
  • 5. Momento Cultural A reprodução é livre, apenas cite a fonte @fgsl
  • 6. A reprodução é livre, apenas cite a fonte @fgsl Aplicações são como cebolas... Shrek by Dreamworks Cebolinha by Maurício de Sousa hortifrutibrasil.blogspot.com
  • 7. A reprodução é livre, apenas cite a fonte @fgsl … elas têm camadas! mais-objetiva.blogspot.com
  • 8. A reprodução é livre, apenas cite a fonte @fgsl Mas pra quê camadas? manequim.abril.com.br copacabanadetoledo.blogger.com.br
  • 9. A reprodução é livre, apenas cite a fonte @fgsl O que são camadas? Martin Fowler camadas são “os subsistemas principais no software dispostos de forma parecida com camadas de um bolo, em que cada camada repousa sobre uma camada mais baixa”
  • 10. A reprodução é livre, apenas cite a fonte @fgsl Vantagens de usar camadas ►Compreensão de uma única camada como um todo coerente sem necessidade de saber muito sobre as demais camadas. ►Uma camada pode ser substituída por implementações alternativas dos mesmos serviços básicos. ►O uso de camadas diminui a dependência entre as partes de um sistema ►Camadas são bons lugares para definir padrões. ►Uma vez construída, uma camada pode ser usada por muitos serviços de nível mais alto.
  • 11. A reprodução é livre, apenas cite a fonte @fgsl Camadas de uma aplicação Recursos Externos Objetos de acesso a dados Mapeadores, repositórios e scritps de transação Modelos de domínio e Entidades Controle de fluxo da aplicação Apresentação ou exposição de serviço
  • 12. A reprodução é livre, apenas cite a fonte @fgsl E pra quê tudo isso? Porque só existe uma certeza no mundo do software...
  • 13. A reprodução é livre, apenas cite a fonte @fgsl O cliente vai pedir alterações... Eu te amo, você é perfeito... ...mas quero que você mude. Fonte: http://2.bp.blogspot.com/_UM47dm0ECOE/SK1mPgTEzaI/AAAAAAAAAo8/yf2scl7XEQ4/s400/amor+meu+grande+amor.jpg
  • 14. A reprodução é livre, apenas cite a fonte @fgsl O cliente vai pedir mais alterações... Mas fizemos um sistema que funciona, o cliente disse que estava ótimo... e agora temos que fazer mais alterações? Fonte: http://galeria.brfoto.com.br/data/1/choro_sem_cor.jpg
  • 15. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  • 16. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  • 17. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  • 18. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL! Se a mudança é a única certeza, a questão é: Como mudar da melhor forma possível? matutando.com
  • 19. @fgsl A reprodução é livre, apenas cite a fonte Melhor mudança ●Custa pouco ●Leva menos tempo ●Cria o menor impacto na aplicação Fonte: http://aliceprina.files.wordpress.com/2007/09/mudanca-web2.jpg
  • 20. @fgsl A reprodução é livre, apenas cite a fonte Práticas que dificultam mudanças Criação de objetos pela especificação explícita de uma classe. Dependências de uma plataforma de hardware e software específica. Dependência de algoritmos específicos. Acoplamento forte de classes.
  • 21. @fgsl A reprodução é livre, apenas cite a fonte Tempo Algo que você já não tem Algo que você cada dia tem menos taocentro.blogspot.com oitopassos.com
  • 22. @fgsl A reprodução é livre, apenas cite a fonte Complexidade Algo que só tende a aumentar
  • 23. @fgsl A reprodução é livre, apenas cite a fonte Por isso, não invente! eladioebruna.blogspot.com
  • 24. @fgsl A reprodução é livre, apenas cite a fonte Reuse! mosaico.blogs.ie dvdnear.com produto.mercadolivre.com.br 19371973
  • 25. @fgsl A reprodução é livre, apenas cite a fonte Reuse! He-Man, Skeletor and Battle Cat by Mattel De novo essa cena?
  • 26. @fgsl A reprodução é livre, apenas cite a fonte Reuse! ivancarlo.blogspot.com fortressofbaileytude.com John Byrne - 1980 George Pérez - 1985
  • 27. @fgsl A reprodução é livre, apenas cite a fonte Reuse! http://www.coverbrowser.com/top/cool John Buscema - 1968 John Byrne - 1989
  • 28. @fgsl A reprodução é livre, apenas cite a fonte Reuse! http://www.interney.net/blogs/melhoresdomundo/2008/05/21/alex_ross_chupinha_de_novo Capas de John Byrne
  • 29. @fgsl A reprodução é livre, apenas cite a fonte Reutilização “O movimento para o desenvolvimento baseado em reuso foi uma resposta às demandas por menores custos de produção e manutenção de software, entregas mais rápidas de sistemas e aumento da qualidade do software”. Ian Sommerville
  • 30. @fgsl A reprodução é livre, apenas cite a fonte De código De desenho 010101011101101010101 111010010110110010101 010110101110101010101 001011111010110101010 110101010000011111001 011111010000110101010 101011110010101010100 011101010101010101110 001110101010101010101 010110101010101011111 Nonono nonnon nonono nononno Tipos de Reutilização
  • 31. @fgsl A reprodução é livre, apenas cite a fonte Tipos de Reutilização De objetos, quando módulos de código binário de interface padronizada são reaproveitados; De classes, o reaproveitamento de classes fundamentais e bibliotecas-padrão; De plataformas, que se refere ao reaproveitamento de camadas inteiras da arquitetura de uma aplicação.
  • 32. @fgsl A reprodução é livre, apenas cite a fonte Padrões “Padrões para componentes reusáveis facilitam o reuso”
  • 33. @fgsl A reprodução é livre, apenas cite a fonte Padrões “Padrão é uma maneira de fazer algo, ou de buscar um objetivo. Em qualquer atividade que já esteja madura ou em vias de amadurecer, encontraremos métodos eficazes comuns para atingir objetivos e para resolver problemas em vários contextos” Steven John Metsker
  • 34. @fgsl A reprodução é livre, apenas cite a fonte Padrões Reduzem a complexidade, fornecendo abstrações prontas; Reduzem os erros, institucionalizando os detalhes de soluções comuns; Fornecem valor heurístico, sugerindo alternativas de design; Otimizam a comunicação, movendo o diálogo do projeto para um nível mais alto. Steve McConnell
  • 35. @fgsl A reprodução é livre, apenas cite a fonte MVC é um padrão de projeto symfony-project.org Mas as camadas não tem que estar uma em cima da outra? Não necessariamente.
  • 36. A reprodução é livre, apenas cite a fonte @fgsl MVC é só a ponta do iceberg... Recursos Externos Objetos de acesso a dados Mapeadores, repositórios e scritps de transação Modelos de domínio e Entidades Controle de fluxo da aplicação Apresentação ou exposição de serviço M C V
  • 37. A reprodução é livre, apenas cite a fonte @fgsl Não se engane com a figura! Não tem só 1 modelo, 1 visão e 1 controlador.
  • 38. A reprodução é livre, apenas cite a fonte @fgsl Tem mais coisa! N N N
  • 39. A reprodução é livre, apenas cite a fonte @fgsl Uma aplicação tem vários problemas... ...por isso precisa de vários padrões de projeto Justile League of America, by DC Comics
  • 40. A reprodução é livre, apenas cite a fonte @fgsl Software Baseado em Padrão Para viabilizar o projeto de software baseado em padrão, “pode ser necessário fornecer uma infraestrutura do esqueleto de implementação específica, chamada de arcabouço (framework)”. Roger S. Pressman
  • 41. A reprodução é livre, apenas cite a fonte @fgsl Framework “O framework dita a arquitetura de sua aplicação. Ele irá definir a estrutura geral, sua divisão em classes e objetos e em consequência as responsabilidades-chave das classes de objetos, como estas colaboram, e o fluxo de controle. Um framework predefine esses parâmetros de projeto, de maneira que o projetista ou implementador da aplicação, possa se concentrar nos aspectos específicos da mesma”. (Gangue dos Quatro) Royal Flush Gang, by DC Comics Gangue dos Quatro
  • 42. A reprodução é livre, apenas cite a fonte @fgsl Inversão de Controle
  • 43. A reprodução é livre, apenas cite a fonte @fgsl Inversão de Controle A inversão de controle estabelece a diferença entre toolkits ou bibliotecas de sub-rotinas e frameworks. Nas primeiras, o desenvolvedor escreve o corpo principal da aplicação e chama o código que quer reutilizar. No último, o desenvolvedor reutiliza o corpo principal e escreve o código que o framework chama.
  • 44. A reprodução é livre, apenas cite a fonte @fgsl Criação de objetos de forma indireta. Não depende de uma plataforma de hardware e software específica (é PHP né? Dooh!). Não depende de suas próprias implementações. Acoplamento fraco de classes.
  • 45. A reprodução é livre, apenas cite a fonte @fgsl desciclopedia.org Zend Db Zend Service Zend Soap Zend Rest Zend XmlRpc Zend Controller Page Zend Controller Front Controller, Marvel Comics Zend View Zend Layout Vision, Marvel Comics
  • 46. A reprodução é livre, apenas cite a fonte @fgsl Zend Controller Front Zend Application Zend Config Ini Xml Boostrap Inicialização Configuração
  • 47. A reprodução é livre, apenas cite a fonte @fgsl Zend Tool Geração de código
  • 48. A reprodução é livre, apenas cite a fonte @fgsl Além do MVC... ►Action Helpers ►View Helpers ►Plugins ►ViewRenderer ►Router Spiderman, Marvel Comics Doctor Strange, Marvel Comics
  • 49. A reprodução é livre, apenas cite a fonte @fgsl Banco de Dados ►Zend_Db: Abstração da conexão com o banco ►Zend_Db_Statement: Consultas armazenadas ►Zend_Db_Select: SQL orientada a objeto ►Zend_Db_Table: Padrões Data Row Gateway, Data Table Gateway, Data Mapper e Active Record. vamoganhargalo.blogspot.com oculistasoloptica.com
  • 50. A reprodução é livre, apenas cite a fonte @fgsl Segurança ►Zend_Acl: Controle de Acesso ►Zend_Auth, Zend_Oauth e Zend_OpenId: Autenticação ►Zend_Filter: Conversores de dados ►Zend_Captcha: Anti-robô ►Zend_Log:Auditoria ►Zend_Validate: Regras de validação bahianoticias.com.br
  • 51. A reprodução é livre, apenas cite a fonte @fgsl Diagnóstico e Manutenção ►Zend_Debug ►Zend_Log antigo.campinas.sp.gov.br
  • 52. A reprodução é livre, apenas cite a fonte @fgsl Formulários Dinâmicos ►Zend_Form Suporte a filtros, validadores, grupos, subformulários, configuração por arquivo e internacionalização. Superman & Flash, DC Comics es.gov.br
  • 53. A reprodução é livre, apenas cite a fonte @fgsl Infraestrutura ►Zend_Config: Configuração por arquivos INI ou XML ►Zend_Exception: Exceção padrão ►Zend_Loader: Carregamento de classes e arquivos ►Zend_Registry: Variáveis globais ►Zend_Session: Controle da sessão ►Zend_Version: Adivinhe... blogisticanoticias.blogspot.com
  • 54. A reprodução é livre, apenas cite a fonte @fgsl Performance ►Zend_Cache ►Zend_Config ►Zend_Loader ►Zend_Memory brickset.com
  • 55. A reprodução é livre, apenas cite a fonte @fgsl Internacionalização ►Zend_Date ►Zend_Currency ►Zend_Locale ►Zend_Translate blogalize.net
  • 56. A reprodução é livre, apenas cite a fonte @fgsl E-mail ►Zend_Mail frutobrasil.com.br
  • 57. A reprodução é livre, apenas cite a fonte @fgsl Sistema de Busca ►Zend_Search_Lucene baseado em
  • 58. A reprodução é livre, apenas cite a fonte @fgsl Integração com Flash Player ►Zend_Amf
  • 59. A reprodução é livre, apenas cite a fonte @fgsl Integração com Dojo Toolkit ►Zend_Dojo
  • 60. A reprodução é livre, apenas cite a fonte @fgsl Integração com JQuery ►ZendX_JQuery
  • 61. A reprodução é livre, apenas cite a fonte @fgsl Integração com PHPUnit ►Zend_Test blog.censanet.com.brkavorka.wordpress.com
  • 62. A reprodução é livre, apenas cite a fonte @fgsl Computação em Nuvem Zend_Cloud Zend_Service kayllanyketly.blogspot.com
  • 63. A reprodução é livre, apenas cite a fonte @fgsl E muito mais... massageandoocerebro.wordpress.com
  • 64. A reprodução é livre, apenas cite a fonte @fgsl Ah, mas o outro framework suporta PHP 4... Chatotorix, de René Goscinny e Albert Uderzo
  • 65. A reprodução é livre, apenas cite a fonte @fgsl
  • 66. Obrigado! A reprodução é livre, apenas cite a fonte @fgsl www.fgsl.eti.br Little Einsteins by Walt Disney