desfrutando os componentes do zend framework

83
Desfrutando os Componentes do Zend Framework Fernando Geraldo Mantoan

Upload: fernando-geraldo-mantoan

Post on 17-May-2015

20.864 views

Category:

Technology


45 download

DESCRIPTION

Palestra apresentada na Latinoware 2010, sobre os principais componentes do Zend Framework.

TRANSCRIPT

Page 1: Desfrutando os Componentes do Zend Framework

Desfrutando os Componentes do

Zend Framework

Fernando Geraldo Mantoan

Page 2: Desfrutando os Componentes do Zend Framework

Fernando Geraldo Mantoan

●Bacharel em Ciência da Computação – CESUFOZ

●Zend Certified Engineer PHP5

●Zend Certified Engineer Zend Framework

●Analista de Sistemas – ApolloTI

●Membro e fundador do grupo PHPFoz

●(Tentando ser) Contribuidor do Zend Framework

Page 3: Desfrutando os Componentes do Zend Framework

Zend Framework

Page 4: Desfrutando os Componentes do Zend Framework
Page 5: Desfrutando os Componentes do Zend Framework

Filosofia do PHP (Simplicidade)

Boas práticas de Orientação a Objetos

Testes Unitários

Documentação Completa

Biblioteca de Classes

Page 6: Desfrutando os Componentes do Zend Framework
Page 7: Desfrutando os Componentes do Zend Framework

Autenticação & Autorização

Page 8: Desfrutando os Componentes do Zend Framework

Zend_Auth

AutenticaçãoAdapters (LDAP, HTTP, BD)

Zend_Auth_Result

Persistência de identidade (session)

Singleton

Page 9: Desfrutando os Componentes do Zend Framework

Zend_Acl

Autorização Lista de Controle de Acesso (ACL)

Objetos protegidos Papéis

Zend_Acl_Resource Zend_Acl_Role

Assertions

Page 10: Desfrutando os Componentes do Zend Framework

Exemplos

Page 11: Desfrutando os Componentes do Zend Framework

Banco de Dados

Page 12: Desfrutando os Componentes do Zend Framework

Zend_Db

Interface SQL

Zend_Db_Adapter

Db2, Mysqli, Oracle, Pdo (Mysql, Pgsql etc.)

Factory

fetchall,insert, quote (normal, identifier, into)

Page 13: Desfrutando os Componentes do Zend Framework

Zend_Db_Statement

Zend_Db_Adapter::query($sql, $bind)

Zend_Db_Statement::execute($bind)

PDOStatement

Statement preparado e executado

Zend_Db_Statement::fetch()

Page 14: Desfrutando os Componentes do Zend Framework

Zend_Db_Select

SQL Select Pedaços da consulta por métodos OO

Auto quoting Fluent Interface

Zend_Db_Adapter::select()

from(), where(), order(), join(), group(), limit()

Page 15: Desfrutando os Componentes do Zend Framework

Zend_Db_TableTable Data Gateway

Row Data Gateway

Nível de Tabela:Zend_Db_Table_Abstract

Nível de linha:Zend_Db_Table_Row

insert(), update(), delete(), find(), fetchAll(), fetchRow(), info()

save(), delete()

Page 16: Desfrutando os Componentes do Zend Framework

Exemplos

Page 17: Desfrutando os Componentes do Zend Framework

Busca

Page 18: Desfrutando os Componentes do Zend Framework

Zend_Search_LuceneApache Lucene

Buscas com ranking

Buscas com caracteres coringas, caracteres de proximidade, intervalo, etc.

Documentos:Zend_Search_Lucene_Document

Campos:Zend_Search_Lucene_Field

Page 19: Desfrutando os Componentes do Zend Framework

Vários tipos de campos

Índice, armazenado em arquivo binário

Otimização de Índices

Charset padrão: UTF-8

Page 20: Desfrutando os Componentes do Zend Framework

Exemplos

Page 21: Desfrutando os Componentes do Zend Framework

Diagnóstico & Manutenção

Page 22: Desfrutando os Componentes do Zend Framework

Zend_Log Logging de aplicações

Writer

Filter

Formatter

Prioridades:EMERG, ALERT, CRIT, ERR, WARN, NOTICE, INFO, DEBUG, Custom

Stream, Db, Mock

Bloqueia a escrita de uma mensagem

Simple, Xml

Page 23: Desfrutando os Componentes do Zend Framework

Zend_Debug

Zend_Debug::dump($var, $label=null, $echo=true)

var_dump()

Informações sobre uma variável

Imprime ou retorna

Page 24: Desfrutando os Componentes do Zend Framework

Exemplos

Page 25: Desfrutando os Componentes do Zend Framework

Email

Page 26: Desfrutando os Componentes do Zend Framework

Zend_Mail Envio e Leitura de E-mails

Envio:Zend_Mail_Transport_SmtpZend_Mail_Transport_Sendmail

Fluent Interface

setBodyText(), setBodyHtml() setFrom(), addTo(), addCc(), addBcc(), setSubject(), send()

Anexos:createAttachment()

Page 27: Desfrutando os Componentes do Zend Framework

Leitura de E-mails

Mbox, Maildir, Pop3, IMAP

Zend_Mail_Message

Zend_Mail_Storage_Folder_InterfaceMaildir, Mbox

Page 28: Desfrutando os Componentes do Zend Framework

Exemplos

Page 29: Desfrutando os Componentes do Zend Framework

Filtragem & Validação

Page 30: Desfrutando os Componentes do Zend Framework

Zend_Filter Transformação de entradas de dados

Filtros comuns necessários para aplicações web

Zend_Filter_Interfacefilter()

Alnum, Alpha, BaseName, Digits, Dir, HtmlEntities, Int, RealPath, StringToLower, StringToUpper, StringTrim, StripTags

Filter Chain

Page 31: Desfrutando os Componentes do Zend Framework

Zend_Validate Validação de dados

Mensagens de erro sobre falhas de validação

Zend_Validate_InterfaceisValid() getMessages()

Alnum, Alpha, Barcode, Between, Ccnum, Date, Digits, EmailAddress, Float, GreaterThan, Hex, Hostname, InArray, Int, Ip, LessThan, NotEmpty, Regex, StringLength

Chain

Page 32: Desfrutando os Componentes do Zend Framework

Exemplos

Page 33: Desfrutando os Componentes do Zend Framework

Formulários

Page 34: Desfrutando os Componentes do Zend Framework

Zend_Form

Filtragem e validação de dados

Ordenação de elementos, renderização com escaping

Agrupamento de elementos (DisplayGroups)

Formulários multi-páginas(SubForms)

Page 35: Desfrutando os Componentes do Zend Framework

Zend_Form_Element

Button, Hidden, Image, Radio, Reset, Submit, Password, Text, Textarea, Checkbox, Select

Zend_Filter Zend_Validate

Page 36: Desfrutando os Componentes do Zend Framework

Decorators

Configuram a renderização dos elementos

Podem adicionar conteúdo antes ou depois dos elementos

Exemplo: HTML tag <dd> antes de um <input />

Page 37: Desfrutando os Componentes do Zend Framework

Exemplos

Page 38: Desfrutando os Componentes do Zend Framework

Infraestrutura

Page 39: Desfrutando os Componentes do Zend Framework

Zend_ConfigSimplifica o acesso e a utilização de dados de configuração

Formatos: Ini, Json, Xml, Yaml

Hierarquia de chaves(ex: database.username)

Hierarquia de seção[production][development : production]

Page 40: Desfrutando os Componentes do Zend Framework

Zend_ExceptionClasse base para todas as exceções do ZF

Utilizada para um bloco catch mais generalizado

Implementa o suporte a exceções anteriores (PHP 5.3)

Page 41: Desfrutando os Componentes do Zend Framework

Zend_Registry Container de objetos no escopo da aplicação

Zend_Registry::set($chave, $objeto)

Zend_Registry::get($chave)

Zend_Registry::isRegistered($chave)

Page 42: Desfrutando os Componentes do Zend Framework

Zend_Version Contém a versão atual do framework

Zend_Version::VERSION

Zend_Version::compareVersion($version)

-1 = $version é mais velha0 = versões iguais1 = $version é mais nova

Page 43: Desfrutando os Componentes do Zend Framework

Zend_Loader Auxilia a carregar arquivos dinamicamente

Zend_Loader::loadFile($filename)

Zend_Loader::loadClass($class)

Substitui '_' por '/' e adiciona '.php' ao final

Page 44: Desfrutando os Componentes do Zend Framework

Zend_SessionAjuda a gerenciar e preservar dados de sessão

Sessões com namespace:Zend_Session_Namespace

Zend_Session::start()

Dados persistidos são atributos da classe

Page 45: Desfrutando os Componentes do Zend Framework

Exemplos

Page 46: Desfrutando os Componentes do Zend Framework

Internacionalização

Page 47: Desfrutando os Componentes do Zend Framework

Zend_Locale Linguagem e região do usuário

Formatação, normalização, conversões

BROWSER, ENVIRONMENT, FRAMEWORK

getLanguage(), getRegion()

Page 48: Desfrutando os Componentes do Zend Framework

Zend_TranslateTradução de conteúdo em vários idiomas

Adapters:Array, Csv, Gettext, Qt, Tbx, Tmx, Xliff, XmlTm

addTranslation(), _(), setLocale(), getLocale(),

Page 49: Desfrutando os Componentes do Zend Framework

Zend_DateAPI para manipulação de datas e tempos

Zend_Date::now()

get(), set(), add(), sub(), compare()

Completamente internacionalizada (130 idiomas)

Page 50: Desfrutando os Componentes do Zend Framework

Zend_CurrencyI18N para moedas, representação de dinheiro, formatação, cálculo etc.

Suporte a mais de 100 moedas

Cálculo de moedas

Posição da moeda, formato, valor

add(), div(), sub(), mul(), mod(), compare() etc

Page 51: Desfrutando os Componentes do Zend Framework

Exemplos

Page 52: Desfrutando os Componentes do Zend Framework

MVC

Page 53: Desfrutando os Componentes do Zend Framework

Zend_ApplicationFacilita o processo de bootstrapping da aplicação

Recursos Reutilizáveis

Checagem de dependências

Classes comuns de boostrap

Definição do ambiente de execução

Inicia o Autoload por padrão

Page 54: Desfrutando os Componentes do Zend Framework

Zend_ControllerCoração do sistema MVC do ZF

Front Controller Action Helpers e Plugins

URLs amigáveis (em conjunto com o router, dispatcher etc.)controller/action/param/valorusuario/editar/id/1

Page 55: Desfrutando os Componentes do Zend Framework

Zend_Controller

Classe base: Zend_Controller_Action

Métodos possuem como sufixo “Action”indexAction()

Rota padrão de erros, exceptions não tratadas etc.:ErrorController -> errorAction()

Page 56: Desfrutando os Componentes do Zend Framework

Zend_ViewCamada de apresentação de dados (HTML)

Script por controller/action, exemplo:scripts/usuario/listar.phtml

View Helpers

HTML + PHP (default)

Escaping

Filtros de saída

Smarty ou Twig podem ser utilizados

Page 57: Desfrutando os Componentes do Zend Framework

Zend_Layout Two step view design pattern

Script de visão global

Delimitadores definem onde exibir conteúdo, menus, etc.

Habilitar/Desabilitar layouts

Escopo de variáveis separado

Não é fortemente acoplado ao MVC

Page 58: Desfrutando os Componentes do Zend Framework

Exemplos

Page 59: Desfrutando os Componentes do Zend Framework

Performance

Page 60: Desfrutando os Componentes do Zend Framework

Zend_Cache Maneira genérica de se fazer caching de dados.

Frontends:Output, File, Function, Class, Page

Backends:Sqlite, Memcached, Apc, ZendPlatform

Factory

Page 61: Desfrutando os Componentes do Zend Framework

Zend_Memory Gestão de memória em um ambiente com memória limitada

Regula a memória com caching e swapping de dados

Usa backends do Zend_Cache

Page 62: Desfrutando os Componentes do Zend Framework

Exemplos

Page 63: Desfrutando os Componentes do Zend Framework

Webservices

Page 64: Desfrutando os Componentes do Zend Framework

Zend_FeedProvê funcionalidades para consumir feeds RSS e Atom

import(), importFile(), importString(), findFeeds()

Zend_Feed_Rss Zend_Feed_Atom

Zend_Feed_Reader

Page 65: Desfrutando os Componentes do Zend Framework

Zend_XmlRpcSuporta o consumo e criação de serviços XML-RPC

Introspecção de servidor

Conversão automática entre o PHP e o XML-RPC

Servidor expõe dados de métodos através da documentação PHPDoc e suporta classes e funções

Page 66: Desfrutando os Componentes do Zend Framework

Zend_RestSuporta o consumo e criação de serviços Rest

Métodos Remotos = Métodos Nativos

get(), post(), put(), delete()

Servidor com recursos completos

GET e POST e limitação a XML

Page 67: Desfrutando os Componentes do Zend Framework

Zend_ServiceClasse base para implementações de web services

Implementação de serviços populares:Akismet, Amazon, Audioscrobbler, Del.icio.us, Ebay, Flickr, LiveDocx, Nirvanix, ReCaptcha, ShortUrl, Simpy, SlideShare, StrikeIron, Technorati, Twitter, Windows Azure, Yahoo!

Page 68: Desfrutando os Componentes do Zend Framework

Miscelânea

Page 69: Desfrutando os Componentes do Zend Framework

Zend_AmfProvê suporte ao formato Action Message Format da Adobe

GatewayZend_Amf_Server

Mapeamento de requisições para objetos e métodos de classe

Facilidade de configuração

Page 70: Desfrutando os Componentes do Zend Framework

Zend_CloudOferece suporte aos principais players de Cloud Computing

Amazon SimpleDB

Windows Azure

Amazon SQS

Zend Queue

Amazon S3

Nirvanix

Page 71: Desfrutando os Componentes do Zend Framework

Zend_JsonFacilita a serialização entre PHP e JSON e a decodificação de JSON para PHP

Converte objetos PHP para objetos JSON, com opção de identação dos atributos

XML para JSON

Page 72: Desfrutando os Componentes do Zend Framework

Zend_PaginatorComponente flexível para paginação de coleções de dados e apresentação ao usuário

Adapters:Array, DbSelect, DbTableSelect, Iterator, Null

RotasScripts de visão:Itens da página e controle de paginação

Page 73: Desfrutando os Componentes do Zend Framework

Zend_TestFacilita os testes unitários de aplicações escritas com o ZF

Testes de todo MVC

Suporte aos TestCases do PHPUnit

Bootstrapping da aplicação

Page 74: Desfrutando os Componentes do Zend Framework

Zend_ToolProvê recursos RAD para agilizar a criação de aplicações ZF

Uso via Command Line Interface (CLI)

Pacote separado em uma pasta “bin”

Instalação via PEAR

Criação de controllers, actions, views, formulários, layouts etc.

Page 75: Desfrutando os Componentes do Zend Framework

Mais Componentes●Zend_Barcode●Zend_Captcha●Zend_CodeGenerator●Zend_Config_Writer●Zend_Console_Getopt●Zend_Dojo●Zend_Dom●Zend_File●Zend_Gdata●Zend_Http●Zend_InfoCard●Zend_Ldap●Zend_Markup●Zend_Measure●Zend_Mime●Zend_Navigation●Zend_Oauth

●Zend_OpenId●Zend_Pdf●Zend_ProgressBar●Zend_Queue●Zend_Reflection●Zend_Serializer●Zend_Server●Zend_Soap●Zend_Tag●Zend_Text●Zend_TimeSync●Zend_Tool_Framework●Zend_Tool_Project●Zend_Uri●Zend_Wildfire●ZendX_Console_Process_Unix●ZendX_Jquery

Page 76: Desfrutando os Componentes do Zend Framework

Coding Standards

Page 77: Desfrutando os Componentes do Zend Framework

Arquivo só com PHP fica sem “?>”

Identação com 4 espaços, nunca tabs

80 caracteres por linha

Linhas terminam com \n (0x0A)

Sem short tags (<? ?>, <?= ?>)

Constantes, alfanumérico e underscore, maiúsculo, somente em classes e com const. Exemplo:const UPPER_CASE = 0;

Page 78: Desfrutando os Componentes do Zend Framework

Nome de Classes mapeados para o diretório

DAO_User_156 = DAO/User/156.php

Várias palavras: PessoaFisica

Arquivos: alfanumérico, underscore, hífen

Interfaces terminam com “_Interface”

Classes abstratas com “_Abstract”

Page 79: Desfrutando os Componentes do Zend Framework

Estrutura condicional: if ($x == 0) { $x++; } else if ($x < 5) { } else { }

Atributos e variáveis: alfanumérico, underscore, hífen

Atributos e variáveis: camelCased

private ou protected: prefixadas com “_”

acessores prefixados com get ou set

Page 80: Desfrutando os Componentes do Zend Framework
Page 81: Desfrutando os Componentes do Zend Framework

[email protected] [email protected] http://fernandomantoan.com http://fernandomantoan.com @fernandomantoan@fernandomantoan

Page 82: Desfrutando os Componentes do Zend Framework

Referências:

●Zend Framework Reference Guide●Zend Framework Certification Study Guide●Rob Allen – Zend Framework Certification, A Refresher●SILVA, Flávio Gomes Lisboa da. Zend Framework Componentes Poderosos para PHP.

Page 83: Desfrutando os Componentes do Zend Framework

● http://www.fantom-xp.com/wallpapers/30/Strawberry_Summer.jpg● http://www.flickr.com/photos/claudio_ar/2225929813/sizes/l/in/photostream/● http://www.flickr.com/photos/calevans/1716641542/● http://www.flickr.com/photos/jhherren/104065111/● http://www.flickr.com/photos/laughingsquid/2218075860/sizes/o/in/photostream/● http://www.flickr.com/photos/raphaelstolt/440815933/sizes/m/in/photostream/● http://www.flickr.com/photos/plinton/248878222/sizes/o/in/photostream/● http://www.flickr.com/photos/hindrik/1919291052/sizes/l/in/photostream/● http://www.flickr.com/photos/lisetterivera/4622424365/sizes/l/in/photostream/● http://www.flickr.com/photos/adrianclarkmbbs/3063516728/sizes/l/in/photostream/● http://www.flickr.com/photos/stephoto/1519649375/sizes/l/in/photostream/● http://www.flickr.com/photos/go_freyer/3610363038/sizes/l/in/photostream/● http://www.flickr.com/photos/mrszooropa/2803209531/sizes/l/in/photostream/● http://www.flickr.com/photos/agrinberg/565231028/sizes/o/in/photostream/● http://www.flickr.com/photos/anjan58/1281306048/sizes/o/in/photostream/● http://www.flickr.com/photos/shearwater/154210466/sizes/l/in/photostream/● http://www.flickr.com/photos/beatkueng/2696608640/sizes/l/in/photostream/● http://www.textually.org/textually/archives/images/set3/phone-string-plastic-cup.jpg● http://www.flickr.com/photos/oakleyoriginals/3311066815/sizes/l/in/photostream/● http://www.flickr.com/photos/78501498@N00/3081043374/sizes/o/in/photostream/● http://www.flickr.com/photos/e2/2244075454/● http://www.flickr.com/photos/doberagi/1404539812/● http://www.flickr.com/photos/7533960@N02/1522924687/ ● http://www.flickr.com/photos/calevans/1732671937/● http://www.flickr.com/photos/lhirlimann/3069695539/