Palestra Zend Framework na Campus Party 2011

Preview:

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

Informações

www.phpconf.com.br

Projeto FGSL2ZF

http://sourceforge.net/projects/fgslibraryphp

Obrigado

www.fgsl.eti.br