Upload
flavio-lisboa
View
5.494
Download
2
Embed Size (px)
DESCRIPTION
Palestra apresentada na TDC - The Developers Conference, em São Paulo, em 2011.
Citation preview
Zend Framework
PHP Simples e Produtivo
@fgsl
Flávio Gomes da Silva Lisboa www.fgsl.eti.br
Livre distribuição
Desde que citada a fonte
@fgsl
Flávio Gomes da Silva Lisboa www.fgsl.eti.br
Quem sou eu?
www.fgsl.eti.br
@fgsl
Do que vamos falar?
Simplicidade
+
Produtividade
@fgsl
Simplicidade
Mito:
Só coisas complicadas tem qualidade
@fgsl
A princípio impressiona...
A prosopopeia flácida para acalentar bovinos inflou o volume de minha bolsa escrotal de modo que estava para derrubar, com a extremidade do membro inferior, o suporte sustentáculo de uma das unidades de acampamento.
@fgsl
Já ouviu isso?
Não entendi nada do que ele falou. Esse cara deve ser bom!
@fgsl
Mas era só isso...
Aquela conversa pra boi dormir estava me enchendo o saco e eu queria chutar o pau da barraca.
@fgsl
Olha quem está falando...
Qualquer tolo inteligente pode fazer coisas grandes, mais complexas e mais violentas. É preciso um toque de gênio – e um pouco de coragem – para se mover na direção oposta.
Albert Einstein
@fgsl
Olha quem está falando...
A maioria das ideias fundamentais da ciência são essencialmente simples, e podem, como regra, ser expressas em uma linguagem compressível para todos.
Albert Einstein
@fgsl
Essência do PHP
A solução mais complexa raramente é a certa. (…) enquanto outras soluções que nos cercam parecem ficar maiores e mais complexas, estamos nos esforçando para simplificar e racionalizar o PHP (...).
Rasmus Lerdorf
@fgsl
PHP é objetivo@fgsl
PHP é eficaz@fgsl
Produtividade
O que é produtividade?
@fgsl
Não é isso, certamente...@fgsl
Talvez isso...@fgsl
Não, não, é mais que isso...@fgsl
PHP é produtivo@fgsl
Mas cuidado...@fgsl
fazer rápido X fazer bem feito
Rápido Bem feito RápidoBem feito
Rápido e bem feito
@fgsl
fazer rápido X fazer bem feito
Arrumar o escapamento
@fgsl
fazer rápido X fazer bem feito
Reaproveitar o gabinete
@fgsl
fazer rápido X fazer bem feito
Adaptar o carro para rodar na Inglaterra
@fgsl
Fatos
Fazer algo rápido pode gerar complexidade, enquanto fazer algo bem feito pode gerar simplicidade.
@fgsl
Fatos
Algo criado para resolver um problema pode se tornar um problema.
@fgsl
Fatos
A situação crítica é quando você não consegue mudar algo mal feito por precisar dele para contornar um problema maior.
@fgsl
Fatos@fgsl
Fatos
CPOP: Copy & Paste Oriented Programming
Dead Code
CBI: Cross Bug Injection
TDB: Total Destruction Button
@fgsl
O que devo fazer?@fgsl
Recomendações
Copernico Galileu Descartes
Newton
@fgsl
Recomendações@fgsl
Recomendações
Utilize a experiência de especialistas.
Repita projetos de sucesso feitos por outras pessoas.
Não reinvente a roda.
@fgsl
E você pergunta...
COMO?
@fgsl
E eu respondo:
Use padrões de projetos e boas
práticas
@fgsl
E você pergunta...
Mas os padrões são apenas um modelo de solução! Eu tenho que
implementálos!
@fgsl
E eu respondo:
Então use frameworks!
@fgsl
E eu respondo:
Ou melhor, use Zend Framework!
@fgsl
Questão
O que é Zend Framework?
@fgsl
É a Liga da Justiça@fgsl
São os Vingadores!@fgsl
Ou seja...@fgsl
É uma biblioteca de componentes PHP com baixo acoplamento que podem ser
utilizados de forma separada ou em conjunto para construção ou
manutenção de projetos.
A volta ao mundo em ~70 componentes
@fgsl
De A a Z, o que podemos fazer com Zend Framework
Zend_Acl@fgsl
Lista de controle de acessos. Trabalha com a abordagem RBAC (Role Based Access
Control)
Zend_Amf@fgsl
AMF (Action Message Format). Integração com com Adobe Flex.
Zend_Application@fgsl
Encapsula a inicialização e processamento das requisições.
Zend_Auth@fgsl
Componente que faz autenticação, independente do motor, e mantém os dados em
armazenamento próprio.
Zend_Barcode@fgsl
Zend_Cache@fgsl
Zend_Captcha@fgsl
Zend_Cloud@fgsl
Componente para abstração de recursos de computação em
nuvem.
Zend_CodeGenerator@fgsl
...
Zend_Config@fgsl
Lê e escreve nos formatos INI, XML, YAML e JSON.
Zend_Console_Getopt@fgsl
Facilita a criação de interfaces para linha de comando.
Zend_Controller@fgsl
Implementação dos padrões de projeto Front Controller, Page
Controller, com URLs amigáveis e roteamento personalizado.
Zend_Currency@fgsl
Implementa o padrão de projeto Currency, para abstrair moedas.
i18n.
Zend_Date@fgsl
Abstração de data e hora. i18n.
Zend_Db@fgsl
Abstração de conexão com banco de dados e mapeador
objetorelacional.
Zend_Debug@fgsl
Componente para ajudar a depurar aplicações.
Zend_Dojo@fgsl
Integração com o framework Javascript Dojo Toolkit.
Zend_Dom@fgsl
Manipulação da árvore DOM.
Zend_Exception@fgsl
Exceção padrão.
Zend_Feed@fgsl
Leitor e escritor de RSS.
Zend_File@fgsl
Transferência de arquivos com validadores e filtros.
Zend_Filter@fgsl
Filtro de entrada e saída de dados.
Zend_Form@fgsl
Construção dinâmica de formulários.
Zend_GData@fgsl
Integração com a API do Google.
Zend_Http@fgsl
Abstração de requisições e respostas.
Zend_Infocard@fgsl
Utilizado por Zend_Auth, abstrai cartões de identidade.
Zend_Json@fgsl
Conversor e servidor JSON.
Zend_Layout@fgsl
Parte do padrão Two Step View.
Zend_Ldap@fgsl
Integração com serviços LDAP.
Zend_Loader@fgsl
Autocarregador de classes.
Zend_Locale@fgsl
Componente para localização (l10n).
Zend_Log@fgsl
Abstração de log.
Zend_Mail@fgsl
Abstração de email.
Zend_Markup@fgsl
Abstração para leitura e geração de documentos baseados em
linguagem de marcação.
Zend_Measure@fgsl
Abstração de medidas. i18n.
Zend_Memory@fgsl
Objetos para ambientes com limitações de memória.
Zend_Mime@fgsl
Manipulador de mensagens MIME (Multipurpose Internet Mail
Extensions), usado por Zend_Mail.
Zend_Navigation@fgsl
Controlador da navegação do usuário, gerencia árvores de ponteiros para páginas Web.
Zend_Oauth@fgsl
Implementação da especificação Oauth para autorização segura.
Zend_OpenId@fgsl
Encapsula OpenId para autenticação.
Zend_Paginator@fgsl
Controle de paginação de dados.
Zend_Pdf@fgsl
Geração e carregamento de arquivos PDF.
Zend_ProgressBar@fgsl
Geração de barra de progresso.
Zend_Queue@fgsl
Fábrica de clientes para filas.
Zend_Reflection@fgsl
Extensão da API de reflexão do PHP.
Zend_Registry@fgsl
Implementação do padrão de projeto Registry.
Zend_Rest@fgsl
Clientes e servidores REST.
Zend_Search_Lucene@fgsl
Mecanismo de busca baseado no Apache Lucene.
Zend_Serializer@fgsl
Fábrica de formatos de serialização.
Zend_Server@fgsl
Abstração para criação de servidores (provedores de
serviços).
Zend_Service@fgsl
Abstração para serviços de terceiros, possui diversas implementações prontas.
Zend_Session@fgsl
Abstração da sessão. Controla início, fim e cria namespaces.
Zend_Soap@fgsl
Servidor e cliente SOAP.
Zend_Tag@fgsl
Criação de listas de tags.
Zend_Test@fgsl
Extensão do PHPUnit para aplicações Zend Framework.
Zend_Text@fgsl
Classes para criar artes e tabelas baseadas em texto.
Zend_TimeSync@fgsl
Recupera data e hora de servidores NTP (Network Time
Protocol) ou SNTP (Simple NTP).
Zend_Tool@fgsl
Gerador de código e framework para criação de geradores.
Zend_Translate@fgsl
Tradução de textos. i18n.
Zend_Uri@fgsl
Abstração de URI.
Zend_Validate@fgsl
Regras de validação de dados.
Zend_Version@fgsl
Versão do framework.
Zend_View@fgsl
Implementação da camada de visão. Usa por padrão templates
com extensão .phtml.
Zend_Wildfire@fgsl
Wildfire é um projeto open source para canais de comunicação
padronizados. O componente do Zend permite enviar dados do
servidor para o Firebug.
Zend_XmlRpc@fgsl
Cliente e servidor de XMLRPC.
UFA!@fgsl
Perguntas?@fgsl
www.fgsl.eti.br
http://www.temporealeventos.com.br
Obrigado!@fgsl
www.fgsl.eti.br
http://www.temporealeventos.com.br
Referências@fgsl
Holmes, Josh. The Lost Art of Simplicity. PHP Conference 2010.
http://www.joshholmes.com/blog/2009/04/29/thelostartofsimplicity/