2. 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
5. 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
32. 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;
33. 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.
34. PHP tem suporte completo à orientação a
objetos.
Mas também permite uso de programação
estruturada, ao mesmo tempo.
36. Complexidade de código
Ninguém tem o cérebro
grande o bastante para
conter um programa de
computador moderno.
* Dijkstra, Edsger, 1972. “The Humble
Programmer” Communications of the
ACM 15, nº 10 (Outubro): 859-66.
Edsger Wybe Dijkstra
37. Complexidade de código
● Manutenção gera mais código
● mais código = mais complexo
● Maior complexidade exige maior controle
42. Framework
Projetar software orientado a
objetos é difícil.
Projetar software orientado a
objetos reusável é mais
difícil ainda.
Erich Gamma
43. Framework
“Frameworks
estão no mais
alto nível de
reuso”
Erich Gamma
http://www.artima.com/lejava/articles/reuse.html
44. Framework
Frameworks
Padrões de projeto
Bibliotecas de classes e containers
45. Framework
“Construir um
framework é um
alto risco e um
investimento
significativo”.
Erich Gamma
http://www.artima.com/lejava/articles/reuse.html
46. Zend Framework
● Biblioteca de classes PHP 5
● Container para aplicações MVC
● Padrões de projeto implementados
47. 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
52. 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 é.
53. 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
56. Componentes
● Diagnóstico e Manutenção
● Debugger
● Logging
57. 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
59. 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
60. 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
61. Componentes
● Internacionalização
● Localização
● Tradução
● Data
● Moeda
● Helpers de visão
69. 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