php simples e produtivo

Post on 26-May-2015

5.494 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Palestra apresentada na TDC - The Developers Conference, em São Paulo, em 2011.

TRANSCRIPT

   

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 

objeto­relacional.

   

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 e­mail.

   

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 XML­RPC.

   

UFA!@fgsl

   

Perguntas?@fgsl

flaviogomesdasilva@yahoo.com.br

www.fgsl.eti.br 

http://www.temporealeventos.com.br 

   

Obrigado!@fgsl

flaviogomesdasilva@yahoo.com.br

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/

top related