desfrutando os componentes do zend framework

Post on 17-May-2015

20.866 Views

Category:

Technology

45 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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çãoAdapters (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_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()

Exemplos

Busca

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

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_SmtpZend_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_InterfaceMaildir, Mbox

Exemplos

Filtragem & Validação

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

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

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_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]

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)

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 velha0 = versões iguais1 = $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_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

Exemplos

Internacionalização

Zend_Locale Linguagem e região do usuário

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

BROWSER, ENVIRONMENT, FRAMEWORK

getLanguage(), getRegion()

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

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

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

Zend_DateAPI para manipulação de datas e tempos

Zend_Date::now()

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

Completamente internacionalizada (130 idiomas)

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

Exemplos

MVC

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

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

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_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

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_FeedProvê funcionalidades para consumir feeds RSS e Atom

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

Zend_Feed_Rss Zend_Feed_Atom

Zend_Feed_Reader

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

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

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!

Miscelânea

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

Zend_CloudOferece suporte aos principais players de Cloud Computing

Amazon SimpleDB

Windows Azure

Amazon SQS

Zend Queue

Amazon S3

Nirvanix

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

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

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

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.

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.com contato@fernandomantoan.com http://fernandomantoan.com http://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/

top related