83
Desfrutando os Componentes do Zend Framework Fernando Geraldo Mantoan

Desfrutando os Componentes do Zend Framework

Embed Size (px)

DESCRIPTION

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

Citation preview

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/