Upload
flavio-lisboa
View
1.093
Download
1
Embed Size (px)
DESCRIPTION
Palestra sobre Zend Framework proferida na Campus Party 2011
Citation preview
Zend Framework: Desenvolvimento Padronizado e Produtivo
em PHP
Flávio Gomes da Silva Lisboawww.fgsl.eti.br
@fgsl
Desenvolvimento de Software
● Não é como desenvolver um produto industrial tangível
● Não significa criar MAIS código● A manutenção deve ser o principal foco● Você só pode melhorar o que existe
http://www.oitopassos.com/wp-content/uploads/Felizdesaniversrio_11183/chapeleirolouco.jpg
Desenvolvimento de Software
● Você não precisa criar algo novo para escrever seu nome na história.
Replicação de Código
● O mundo não nasceu com você
http://coreauemrede.blogspot.com/2010/05/parto-normal-e-melhor-que-cesariana-diz.html http://imagens.kboing.com.br/papeldeparede/7001criacao.jpg
Replicação de Código
● Antes de tentar resolver o problema, procure alguém que já o resolveu
● Aperfeiçoe a solução existente● Una esforços, não divida-os
Uma flecha sozinha se quebra, por mais que envergue.Mas várias flechas são mais difíceis de quebrar.
Melhor é serem dois do que um, porque têm melhor paga do seu trabalho.
Eclesiastes 4:9
Replicação de Código
● Pratique Engenharia de Software: desenvolva com componentes
Engenharia de Software?
Como seria maravilhoso se fosse possível construir software como se
faz um produto de engenharia... mas deve ser um sonho...
blogs.estadao.com.br
Linha de Produção: um de cada vez
Linha de Produção de Software?
Não dá! Todos ao mesmo tempo!
grupoeditagos.com.br
Pra que serve Engenharia de Software?
Para planejar e acompanhar a construção do software
Arquitetura de Software?
Código bonito?
0000000000000000000000000000000000000000000110000000000110000011110000000011110000011000000000011000000000000000000000000000000000000000000000000010000001000000000000010000100000000100000000000000001000100000000000000100000111111111111110000000111111111111000000000000000000000000
Não! Código funcional, reusável, fácil de manter
e que atende os requisitos do cliente
WYAIWII
Não faça isso com software!
Não faça isso com software!
Não faça isso com software!
Não faça isso com software!
Não faça isso com software!
Não faça isso com software!
Não faça isso com software!
Não faça isso com software!
Não faça isso com software!
Não faça isso com software!
Replicação de Código
● O ideal é nem programar...
http
://ts
f.sap
o.pt
/Sto
rage
/ng1
046
747
.jpg
Replicação de Código
● Mas tem que ter uma base...
Replicação de Código
● Você pode construir seus componentes...
Replicação de Código
● Mas compartilhe-os...
Multiplicidade de Soluções
● Estamos falando de PHP especificamente...
PHP roda em quase 1/3 da Internet;PHP é simples, não é preciso doutorado para utilizá-la;PHP é adaptável;PHP é interoperável;PHP é portável;PHP tem mais de 4,5 milhões de usuários;A combinação Linux/Apache/PHP tem alta performance e estabilidade;
PHP foi criada para Web.
Mas também é excelente para scripts de automação de tarefas.
Também cria aplicações Desktop (PHP-GTK)
E agora também cria aplicações embarcadas em Android.
PHP tem suporte completo à orientação a objetos.
Mas também permite uso de programação estruturada, ao mesmo tempo.
Multiplicidade de Soluções
● Muitas opções● Muitas possibilidades● Muitas dúvidas: o que usar e como usar?
Complexidade de código
Ninguém tem o cérebro
grande o bastante para
conter um programa de
computador moderno.
Edsger Wybe Dijkstra
* Dijkstra, Edsger, 1972. “The Humble Programmer” Communications of the ACM 15, nº 10 (Outubro): 859-66.
Complexidade de código
● Manutenção gera mais código● mais código = mais complexo● Maior complexidade exige maior controle
Complexidade de código
Rede de dependências
A
B CD
E FG HI
J K
Rede de dependências
Rede de dependências
Framework
Projetar software orientado a objetos é difícil.
Projetar software orientado a objetos reusável é mais
difícil ainda.
Erich Gamma
Framework
“Frameworks estão no mais alto nível de
reuso”
Erich Gamma
http://www.artima.com/lejava/articles/reuse.html
Framework
Bibliotecas de classes e containers
Padrões de projeto
Bibliotecas de classes e containers
Frameworks
Framework
“Construir um framework é um alto risco e um investimento significativo”.
Erich Gamma
http://www.artima.com/lejava/articles/reuse.html
Zend Framework
● Biblioteca de classes PHP 5● Container para aplicações MVC ● Padrões de projeto implementados
Zend Framework
● Código extensível● Código bem testado● Arquitetura flexível● Sem necessidade de arquivos de configuração● Licença 'amigável': livre e aberto● Suporte a AJAX, busca, web services e
computação em nuvem.● Comunidade ativa: ● Farta documentação e bibliografia
Padrões de Codificação
Felipe II da Macedônia
Padrões de Codificação
Otto von Bismarck
Arquitetura
Arquitetura
Componentes
● Acoplamento fraco: poucas dependências● Interface padronizada: melhor comunicação● Configuráveis: de acordo com seu gosto● Framework provê abstração para
componentes de terceiros: para aplicação, fica transparente o que é do Zend Framework e o que não é.
Componentes
● MVC● Controlador Frontal● Controlador de Página● Visão em Duas Etapas● Modelo: Banco de Dados, RSS, Mecanismo de
Busca, Webservices...● Roteadores● Plugins● Helpers
Componentes
Componentes
● Segurança● Autenticação● Autorização● Filtros● Validadores● Tratamento de SQL Injection
Componentes
● Diagnóstico e Manutenção● Debugger● Logging
Componentes
● Infraestrutura● Configuração por arquivos .INI, .XML ou .YAML● Exceções● Registro Ativo● Controle da versão● Carregador de classes e arquivos● Sessão
Componentes
● Performance● Cache● Memória● Configuração● Otimização
Componentes
● Banco de Dados● Abstração da conexão● Consultas armazenadas● SQL Orientada a Objeto● Data Table Gateway e Data Row Gateway● Data Mapper e Active Record
Componentes
● Formulários dinâmicos● Composição de elementos● Validação integrada● Filtragem integrada● AJAX integrado● RIA integrada● Subformulários● Configuráveis por arquivos .INI● Internacionalização
Componentes
● Internacionalização● Localização● Tradução● Data● Moeda● Helpers de visão
Componentes
● E-mail● Envio● Armazenamento
Componentes
● Busca● Indexação● Consulta● Performance
Componentes
● Webservices● XML-RPC● SOAP● REST● Zend_Service
Componentes
● Nuvem● Amazon● Google● Genérico
Componentes
● Et coetera
Comunidade
Comunidade
Comunidade
Mais de 10 Milhões de Downloads
Mais de 500 Contribudores
Mais de 1000 páginas no Guia de Referência On-Line
Mais de 500 Exemplos no Guia de Referência On-Line
Quase 6 milhões de hits no Google
Mais de 900 hits em Technorati
Mais de 120 projetos que são baseados, estendem ou suportam Zend Framework no SourceForge
Mais de 280 projetos que são baseados, estendem ou suportam Zend Framework no Google Code
Mais de 4000 relatos resolvidos no Issue Tracker
Antecipação à evolução do PHP
Informações
http://framework.zend.com
http://forum.zfbrasil.com
Livros:
Informações
http://www.temporealeventos.com.br/?area=199
Mão na Massa Zend Framework
http://www.temporealeventos.com.br/?area=107
Projeto FGSL2ZF
http://sourceforge.net/projects/fgslibraryphp