SlideShare uma empresa Scribd logo
1 de 83
Baixar para ler offline
Desfrutando os Componentes do
Zend Framework
Fernando Geraldo Mantoan
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
Zend Framework
Filosofia do PHP (Simplicidade)
Boas práticas de Orientação a
Objetos
Testes Unitários
Documentação Completa
Biblioteca de Classes
Autenticação & Autorização
Zend_Auth
Autenticação
Adapters (LDAP,
HTTP, BD)
Zend_Auth_Result
Persistência de identidade (session)
Singleton
Zend_Acl
Autorização
Lista de Controle
de Acesso (ACL)
Objetos
protegidos
Papéis
Zend_Acl_Resource Zend_Acl_Role
Assertions
Exemplos
Banco de Dados
Zend_Db
Interface SQL
Zend_Db_Adapter
Db2, Mysqli, Oracle,
Pdo (Mysql, Pgsql
etc.)
Factory
fetchall,insert, quote
(normal, identifier, into)
Zend_Db_Statement
Zend_Db_Adapter::query($sql, $bind)
Zend_Db_Statement::execute($bind)
PDOStatement
Statement preparado e
executado
Zend_Db_Statement::fetch()
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()
Zend_Db_Table
Table 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()
Exemplos
Busca
Zend_Search_Lucene
Apache Lucene
Buscas com ranking
Buscas com caracteres coringas,
caracteres de proximidade, intervalo,
etc.
Documentos:
Zend_Search_Lucene_Document
Campos:
Zend_Search_Lucene_Field
Vários tipos de campos
Índice, armazenado em arquivo binário
Otimização de Índices
Charset padrão: UTF-8
Exemplos
Diagnóstico & Manutenção
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
Zend_Debug
Zend_Debug::dump($var,
$label=null, $echo=true)
var_dump()
Informações sobre uma variável
Imprime ou retorna
Exemplos
Email
Zend_Mail Envio e Leitura de
E-mails
Envio:
Zend_Mail_Transport_Smtp
Zend_Mail_Transport_Sendmail
Fluent Interface
setBodyText(), setBodyHtml()
setFrom(), addTo(), addCc(),
addBcc(), setSubject(), send()
Anexos:
createAttachment()
Leitura de E-mails
Mbox, Maildir, Pop3, IMAP
Zend_Mail_Message
Zend_Mail_Storage_Folder_Interface
Maildir, Mbox
Exemplos
Filtragem & Validação
Zend_Filter Transformação de
entradas de dados
Filtros comuns necessários para
aplicações web
Zend_Filter_Interface
filter()
Alnum, Alpha, BaseName, Digits, Dir,
HtmlEntities, Int, RealPath,
StringToLower, StringToUpper,
StringTrim, StripTags
Filter Chain
Zend_Validate Validação de dados
Mensagens de erro sobre falhas de
validação
Zend_Validate_Interface
isValid()
getMessages()
Alnum, Alpha, Barcode, Between,
Ccnum, Date, Digits, EmailAddress,
Float, GreaterThan, Hex, Hostname,
InArray, Int, Ip, LessThan, NotEmpty,
Regex, StringLength
Chain
Exemplos
Formulários
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)
Zend_Form_Element
Button, Hidden, Image, Radio, Reset,
Submit, Password, Text, Textarea,
Checkbox, Select
Zend_Filter Zend_Validate
Decorators
Configuram a renderização dos
elementos
Podem adicionar conteúdo antes ou
depois dos elementos
Exemplo: HTML tag <dd> antes de um
<input />
Exemplos
Infraestrutura
Zend_Config
Simplifica 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]
Zend_Exception
Classe 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)
Zend_Registry Container de objetos no
escopo da aplicação
Zend_Registry::set($chave, $objeto)
Zend_Registry::get($chave)
Zend_Registry::isRegistered($chave)
Zend_Version Contém a versão
atual do framework
Zend_Version::VERSION
Zend_Version::compareVersion($version)
-1 = $version é mais velha
0 = versões iguais
1 = $version é mais nova
Zend_Loader Auxilia a carregar
arquivos dinamicamente
Zend_Loader::loadFile($filename)
Zend_Loader::loadClass($class)
Substitui '_' por '/' e adiciona '.php' ao
final
Zend_Session
Ajuda 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
Exemplos
Internacionalização
Zend_Locale Linguagem e região do
usuário
Formatação, normalização, conversões
BROWSER, ENVIRONMENT,
FRAMEWORK
getLanguage(), getRegion()
Zend_Translate
Tradução de
conteúdo em vários
idiomas
Adapters:
Array, Csv, Gettext, Qt, Tbx, Tmx, Xliff,
XmlTm
addTranslation(), _(), setLocale(),
getLocale(),
Zend_Date
API para manipulação
de datas e tempos
Zend_Date::now()
get(), set(), add(), sub(), compare()
Completamente
internacionalizada (130 idiomas)
Zend_Currency
I18N 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
Exemplos
MVC
Zend_Application
Facilita 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
Zend_Controller
Coraçã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/valor
usuario/editar/id/1
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()
Zend_View
Camada 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
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
Exemplos
Performance
Zend_Cache Maneira genérica de se
fazer caching de dados.
Frontends:
Output, File, Function, Class, Page
Backends:
Sqlite, Memcached, Apc, ZendPlatform
Factory
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
Exemplos
Webservices
Zend_Feed
Provê funcionalidades
para consumir feeds
RSS e Atom
import(), importFile(), importString(),
findFeeds()
Zend_Feed_Rss Zend_Feed_Atom
Zend_Feed_Reader
Zend_XmlRpc
Suporta 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
Zend_Rest
Suporta 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
Zend_Service
Classe 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!
Miscelânea
Zend_Amf
Provê suporte ao
formato Action
Message Format da
Adobe
Gateway
Zend_Amf_Server
Mapeamento de requisições para
objetos e métodos de classe
Facilidade de configuração
Zend_Cloud
Oferece suporte aos
principais players de
Cloud Computing
Amazon SimpleDB
Windows Azure
Amazon SQS
Zend Queue
Amazon S3
Nirvanix
Zend_Json
Facilita 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
Zend_Paginator
Componente flexível
para paginação de
coleções de dados e
apresentação ao
usuário
Adapters:
Array, DbSelect, DbTableSelect,
Iterator, Null
Rotas
Scripts de visão:
Itens da página e controle de
paginação
Zend_Test
Facilita os testes
unitários de aplicações
escritas com o ZF
Testes de todo MVC
Suporte aos TestCases do PHPUnit
Bootstrapping da aplicação
Zend_Tool
Provê 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.
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
Coding Standards
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;
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”
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
Obrigado!
contato@fernandomantoan.comcontato@fernandomantoan.com
http://fernandomantoan.comhttp://fernandomantoan.com
@fernandomantoan@fernandomantoan
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.
● 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/

Mais conteúdo relacionado

Mais procurados

Mais procurados (11)

Java 14
Java 14Java 14
Java 14
 
Fundamentos de Objetos Remotos
Fundamentos de Objetos RemotosFundamentos de Objetos Remotos
Fundamentos de Objetos Remotos
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend Framework
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresql
 
Integração com Banco de Dados
Integração com Banco de DadosIntegração com Banco de Dados
Integração com Banco de Dados
 
Apache Ant
Apache AntApache Ant
Apache Ant
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Java 08
Java 08Java 08
Java 08
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 

Destaque

Destaque (10)

Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...
Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...
Estudo de Caso de uma Estrutura de Autenticação Única utilizando o protocolo ...
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2
 
Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2
 
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
 
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend FrameworkEntendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend Framework
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantes
 
Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLite
 

Semelhante a Desfrutando os Componentes do Zend Framework

Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC Marília
Elvis Fusco
 

Semelhante a Desfrutando os Componentes do Zend Framework (20)

ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009
 
Conhecendo o Zend Framework
Conhecendo o Zend FrameworkConhecendo o Zend Framework
Conhecendo o Zend Framework
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
 
O que esperar do Zend Framework 2
O que esperar do Zend Framework 2O que esperar do Zend Framework 2
O que esperar do Zend Framework 2
 
Framework PHP Zend e MVC
Framework PHP Zend e MVCFramework PHP Zend e MVC
Framework PHP Zend e MVC
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC Marília
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Terraform.pptx
Terraform.pptxTerraform.pptx
Terraform.pptx
 
PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Webservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHPWebservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHP
 
Certificação Zend Framework
Certificação Zend FrameworkCertificação Zend Framework
Certificação Zend Framework
 
`
``
`
 

Último

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Último (7)

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 

Desfrutando os Componentes do Zend Framework