Vous êtes sur la page 1sur 15

Parte 1 Fundamentos

s dois primeiros captulos deste livro apresentam o Zend Framework. O Captulo 1 considera o que o Zend Framework e por que voc vai querer uslo em seu processo de desenvolvimento para web com PHP. O Captulo 2 constri uma aplicao simples com Zend Framework, que mostra como as diferentes partes se encaixam. A introduo do padro de design Modelo Viso Controlador (Model View Controller - MVC) trar organizao sua aplicao e estabelecer as bases para o restante do livro.

Introduo ao Zend Framework

Este captulo cobre


Por que usar Zend Framework O que o Zend Framework capaz de fazer A losoa por detrs do Zend Framework O PHP vem sendo usado para o desenvolvimento de websites dinmicos h mais de 10 anos. Inicialmente, todos os websites PHP eram escritos com cdigo PHP intercalado com HTML na mesma pgina. Isto funcionava muito bem, pois fornecia uma resposta rpida, e para scripts simples aparentemente isso tudo o que era necessrio. O PHP tornou-se mais popular nas verses 3 e 4, e, inevitavelmente, aplicaes cada vez maiores passaram a ser escritas em PHP. Rapidamente tornou-se bvio que misturar cdigo PHP com HTML no era uma soluo de longo prazo para websites maiores. Os problemas tornaram-se evidentes: manuteno e capacidade de extenso. Embora o PHP misturado com HTML permita resultados extremamente rpidos, a longo prazo fica difcil continuar atualizando o website. Um dos recursos mais interessantes em fazer publicaes na web est no dinamismo em relao s mudanas no contedo e no layout do site. Sites grandes mudam o tempo todo e a aparncia do site atualizada constantemente medida que as necessidades dos usurios (e dos patrocinadores!) mudam. Algo precisava ser feito. O Zend Framework foi criado para ajudar a garantir que a criao de websites baseados em PHP fosse mais fcil e que estes pudessem ser mantidos no longo prazo. O framework contm um conjunto bem rico de componentes reutilizveis contendo tudo, desde um conjunto de componentes para aplicaes Modelo-Viso-Controlador (Model-View-Controller) at classes para gerao de PDFs. Ao longo deste livro, vere-

CAPTULO 1

Introduo ao Zend Framework

mos como usar todos os componentes do Zend Framework dentro do contexto de um website de verdade. Neste captulo, discutiremos em que consiste o Zend Framework e por que voc deve utiliz-lo, e daremos uma olhada em algumas das filosofias de design por detrs dele. Esta introduo ao framework ser um guia para o restante do livro e ajudar a tornar mais clara a tomada de decises de design em relao a cada componente. Vamos comear dando uma olhada em como o Zend Framework consegue oferecer uma estrutura para o cdigo-base de um website.

1.1

Introduzindo estrutura em websites PHP


A soluo para esta mistura confusa de cdigo PHP e HTML em um website a estrutura. A abordagem mais bvia para estruturar aplicaes em sites PHP consiste em aplicar o conceito de separao das responsabilidades. Isto significa que Figura 1.1 A o cdigo que faz a apresentao no deve organizao de estar no mesmo arquivo do cdigo que um arquivo PHP faz a conexo com o banco de dados e tpico, criado por um que coleta os dados. A abordagem inicial, principiante mescla em geral, mistura os dois tipos de cdigo, cdigo HTML e PHP conforme mostrado na figura 1.1. de forma linear A maioria dos desenvolvedores comedida que o arquivo mea a introduzir estrutura no cdigo criado. de um website por default, e o conceito de reusabilidade aparece. Em geral, isto significa que o cdigo que faz a conexo com o banco de dados separado em um arquivo com um nome como db.inc.php. Tendo separado o cdigo de banco de dados, parece ento ser lgico fazer a separao do cdigo que mostra os elementos comuns de cabealho e de rodap de cada uma das pginas. Funes so depois introduzidas para ajudar a resolver o problema de variveis globais afetando umas s outras, garantindo que as variveis permaneam ativas somente dentro do escopo de suas prprias funes. medida que o website cresce, funcionalidades comuns compartilhadas por diversas pginas so agrupadas em bibliotecas. Antes de perceber, a aplicao torna-se muito mais fcil de ser mantida e a adio de novos recursos sem quebrar o cdigo existente torna-se mais simples. O website continua a ser expandido at atingir um ponto em que o cdigo suportado fica to grande que voc no consegue mais visualizar como tudo funciona em sua mente. Desenvolvedores de PHP esto acostumados a ter gigantes embaixo deles, pois a linguagem permite um acesso fcil a bibliotecas como a biblioteca de imagens GD, as vrias bibliotecas de acesso de clientes de bancos de dados e at mesmo bibliotecas especficas de sistemas, como a COM do Microsoft Windows. A introduo da Programao Orientada a Objetos, conhecida como POO, nos domnios do PHP era inevitvel.

Figura 1.2 Uma aplicao MVC tpica separa o cdigo de uma aplicao em responsabilidades separadas.

Enquanto as classes do PHP4 ofereciam recursos limitados de POO, o PHP5 oferece um suporte excelente para tudo o que voc poderia esperar de uma linguagem orientada a

Por que usar o Zend Framework?

objetos. Existem especificadores de visibilidade para membros de classes (pblico, privado e protegido) juntamente com interfaces, classes abstratas e suporte para excees. O suporte melhorado orientao a objetos do PHP permite que bibliotecas muito mais complexas (conhecidas como frameworks) evoluam, como o Zend Framework, que suporta o padro de design Modelo-Viso-Controlador - uma maneira de organizar arquivos de aplicaes web. Este padro de design mostrado na figura 1.2. Uma aplicao criada usando os princpios do MVC resulta em mais arquivos, mas cada arquivo especializado naquilo que faz, o que facilita muito a manuteno. Por exemplo, todo o cdigo que efetua consultas a banco de dados fica armazenado em classes conhecidas como modelos. O cdigo HTML propriamente dito conhecido como viso (o qual pode conter tambm lgica PHP simples), e os arquivos do controlador lidam com a conexo dos modelos corretos com as vises corretas para mostrar a pgina desejada. O Zend Framework no a nica opo para organizar um website baseado em princpios do MVC; existem vrios outros no mundo PHP. Vamos dar uma olhada no que o Zend Framework contm e no motivo pelo qual ele deve ser levado em considerao.

1.2

Por que usar o Zend Framework?


Antes de mergulhar de cabea nele, daremos uma olhada no motivo pelo qual usaremos o Zend Framework dentre todos os demais frameworks PHP existentes por a. De imediato, o Zend Framework introduz um conjunto padronizado de componentes que permite o fcil desenvolvimento de aplicaes web que podem ser desenvolvidas, mantidas e melhoradas facilmente. O Zend Framework possui diversos recursos fundamentais que valem a pena ser investigados: Tudo na caixa Design moderno Fcil de aprender Documentao completa Desenvolvimento simplificado Desenvolvimento rpido Esta lista bem concisa, portanto vamos dar uma olhada em um item de cada vez e ver o que o mesmo significa para ns enquanto desenvolvedores de websites.

1.2.1

Tudo na caixa
O Zend Framework um framework bem abrangente e de baixo acoplamento, que contm tudo o que necessrio para o desenvolvimento de sua aplicao. Isto inclui um componente MVC robusto para garantir que o seu website seja estruturado de acordo com as melhores prticas existentes, e outros componentes para autenticao, buscas, localizao, criao de PDF, e-mail e conexo com servios de web, juntamente com alguns outros itens mais esotricos. Estes componentes podem ser agrupados em seis categorias mostradas na figura 1.3.

Figura 1.3 Existem vrios componentes no Zend Framework, mas podemos agrup-los nestas seis categorias para facilitar a referncia.

Isto no significa dizer que o Zend Framework no funcione bem com outras bibliotecas; ele faz isso tambm. Uma caracterstica fundamental do design do framework que fcil utilizar somente as partes que voc quiser em sua aplicao ou com outras

CAPTULO 1

Introduo ao Zend Framework

bibliotecas como PEAR, a biblioteca de banco de dados Doctrine ORM ou a biblioteca de templates Smarty. Voc pode at mesmo usar os componentes do Zend Framework com outros frameworks MVC para PHP como Symfony, CakePHP ou CodeIgniter.

1.2.2

Design moderno
O Zend Framework est escrito em PHP5 orientado a objetos usando as tcnicas modernas de design, conhecidas como padres de design (design patterns). Padres de design de software so solues reconhecidas de alto nvel para problemas de design e, sendo assim, no correspondem a uma implementao especfica das solues. A verdadeira implementao depende da natureza do restante do design. O Zend Framework faz uso de vrios padres de design e sua implementao foi cuidadosamente desenvolvida para permitir o mximo de flexibilidade aos desenvolvedores de aplicaes sem fazer com que eles tenham muito trabalho! O framework reconhece o jeito PHP e no fora voc a utilizar todos os componentes, de modo que voc tem a liberdade de selecionar aqueles que desejar. Isto especialmente importante, pois permite introduzir componentes especficos em um site existente. O segredo est no fato de que cada componente do framework tem poucas dependncias em relao aos demais. Isto permite introduzir componentes especficos do Zend Framework, tais como o Zend_Search, Zend_Pdf ou o Zend_Cache em seu projeto corrente sem ter de substituir todo o restante do cdigo de seu projeto.

1.2.3

Fcil de aprender
Se voc como eu, entender como um cdigo extenso funciona difcil! Felizmente, o Zend Framework modular, encorajando os desenvolvedores com uma filosofia de design do tipo use conforme desejar que o torna fcil de ser aprendido, passo a passo. Cada componente no depende de vrios outros componentes e, portanto, fcil de ser estudado. O design de cada componente feito de tal modo que voc no precisa entender como ele funciona em sua totalidade antes de poder utiliz-lo e se beneficiar com o mesmo. Depois de adquirir alguma experincia no uso do componente, aprender a usar os recursos mais avanados bem direto e pode ser feito em passos. Isto diminui a barreira inicial. Por exemplo, o componente de configurao Zend_Cong usado para disponibilizar uma interface orientada a objetos para um arquivo de configurao. Ele suporta dois recursos avanados: sobrecarga de seo e chaves aninhadas, mas nenhum destes recursos precisa ser compreendido para que o componente possa ser utilizado. Uma vez tendo uma implementao do Zend_Cong funcionando em seu cdigo, a confiana do usurio aumenta, e o uso de recursos mais avanados ser um pequeno passo.

1.2.4

Documentao completa
No importa o quanto o cdigo seja bom, pode-se matar um projeto pela falta de adoo de uma documentao. Como o Zend Framework destinado a desenvolvedores que no querem vasculhar todo o cdigo-fonte para ter suas tarefas executadas, ele coloca a documentao no mesmo p de igualdade que o cdigo. Isto significa que a equipe que desenvolve a parte principal no poder introduzir cdigos novos no framework, a menos que o mesmo venha acompanhado de documentao. Existem dois tipos de documentao fornecidos pelo framework: de API e de usurio final. A documentao de API criada usando-se o PHPDocumenter e gerada automaticamente usando-se comentrios DocBlock especiais no cdigo-fonte. Estes comentrios encontram-se tipicamente logo acima de todas as classes, funes e declaraes de variveis membros. Uma das principais vantagens de se usar DocBlocks que IDEs como o projeto PDT do Eclipse ou o Zends Studio so capazes de fornecer dicas em ferramentas de preenchimento automtico durante a codificao, resultando em uma melhoria na produtividade do desenvolvedor.

Por que usar o Zend Framework?

Documentao includa
O Zend Framework disponibiliza um manual completo como parte do download, e que est disponvel tambm on-line em http://framework.zend.com/manual. O manual oferece detalhes sobre todos os componentes do framework e mostra quais funcionalidades esto disponveis. Exemplos so disponibilizados para ajudar voc a comear a utilizar o componente em uma aplicao. Mais importante ainda, no caso de componentes mais complexos (como o Zend_Controller), a teoria da operao tambm coberta para que voc possa entender por que o componente funciona do modo como o faz. A documentao disponibilizada juntamente com o framework no explica como encaixar todos os componentes juntos para criar uma aplicao completa. Como resultado, vrios tutoriais surgiram na web, criados pelos membros da comunidade para ajudar os desenvolvedores a comear a utilizar o framework. Estes tutoriais foram reunidos em uma pgina web na wiki do Zend Framework em http://framework. zend.com/wiki/x/q. Embora sejam um ponto de partida bastante til, os tutoriais tendem a no se aprofundar em cada componente ou a no mostrar como ele funciona dentro de uma aplicao no trivial, razo pela qual este livro existe.

1.2.5

Desenvolvimento simplicado
Conforme j observamos, um dos pontos fortes do PHP o fato de que o desenvolvimento de pginas web dinmicas e simples torna-se muito fcil. Esta facilidade de uso permite que milhes de pessoas tenham websites fantsticos, o que, de outro modo, no seria possvel. Como resultado, a habilidade dos programadores PHP varia de pessoas que so principiantes, utilizando-o como hobby, at desenvolvedores profissionais em empresas. O Zend Framework foi criado para tornar o desenvolvimento mais simples e fcil para todos os nveis de desenvolvedores. Ento, como ele simplifica o desenvolvimento? O principal recurso que o framework adiciona um cdigo testado e confivel, que faz o trabalho mundano de uma aplicao. Isto significa que o cdigo que voc escrever o cdigo necessrio sua aplicao. Os cdigos que compem as partes maantes so tratados para voc e no ficam no meio de seu cdigo.

1.2.6

Desenvolvimento rpido
O Zend Framework facilita a continuidade de sua aplicao web ou a adio de novas funcionalidades em um website corrente. O framework disponibiliza vrios dos componentes bsicos de uma aplicao, dando a voc a liberdade para se concentrar nas partes principais de sua aplicao. Voc pode comear rapidamente com uma determinada parte da funcionalidade e ver os resultados imediatamente. Outra maneira com a qual o framework acelera o desenvolvimento que o uso default da maioria dos componentes o caso mais comum. Em outras palavras, voc no precisa se preocupar em configurar diversos parmetros de configurao para cada componente para comear a utiliz-lo. Por exemplo, o uso mais simples de todo o MVC inicializado somente com o cdigo a seguir: require_once(Zend/Loader.php); Zend_Loader::registerAuthoload(); Zend_Controller_Front::run(/path/to/controllers); Uma vez em execuo, a adio de uma nova pgina em sua aplicao pode ser to fcil quanto adicionar uma nova funo em uma classe, juntamente com um novo arquivo de script para viso no diretrio correto. De modo similar, o Zend_Session

CAPTULO 1

Introduo ao Zend Framework

oferece diversas opes que podem ser configuradas para voc poder administrar sua sesso exatamente da maneira que quiser; no entanto, nada precisa ser configurado para usar o componente na maioria dos casos de uso.

1.2.7

Cdigo estruturado mais fcil de ser mantido


Como vimos anteriormente, separar as diferentes responsabilidades torna uma aplicao estruturada. Significa tambm que quando voc estiver corrigindo bugs, ser mais fcil encontrar o que estiver procurando. De modo similar, quando voc precisar adicionar um novo recurso no cdigo de apresentao, os nicos arquivos que voc precisa olhar so aqueles relacionados com a lgica da apresentao. Isto evita bugs que podem ser inadvertidamente criados ao fazer com que alguma outra coisa deixe de funcionar ao adicionar o novo recurso. O framework tambm estimula voc a escrever cdigo orientado a objetos, o que facilita a manuteno de sua aplicao. Ns j vimos por que o Zend Framework foi desenvolvido e quais as principais vantagens que ele traz para o desenvolvimento de websites e aplicaes PHP. Voltaremos nossa ateno agora para os componentes contidos no Zend Framework e como eles nos ajudaro a construir websites mais facilmente.

1.3

O que o Zend Framework?


O Zend Framework uma biblioteca PHP para o desenvolvimento de aplicaes web com PHP. Os componentes se encaixam para oferecer um framework de pilha completa com todos os componentes necessrios para construir aplicaes modernas, fceis de serem criadas e mantidas. No entanto, esta descrio bem simplificada no conta a histria toda, ento vamos ver de onde veio este framework e o que ele realmente contm.

1.3.1

De onde veio o Zend Framework?


Os frameworks esto presentes h vrios anos. O primeiro framework para web que Rob usou em um projeto verdadeiro foi o Fusebox, que foi originalmente escrito para ColdFusion. Vrios outros frameworks apareceram desde ento, sendo o Struts o prximo de maior destaque, escrito em Java. Vrios clones PHP do Struts foram escritos, mas no foram muito bem traduzidos para o PHP. O maior problema estava no fato de que as aplicaes web em Java so executadas em uma mquina virtual que executa continuamente, de modo que o tempo de inicializao da aplicao web no relevante em cada solicitao web. O PHP inicializa cada solicitao a partir de um estado anterior novo, de modo que a longa inicializao exigida pelos clones do Struts os tornaram relativamente lentos enquanto resultado. Alguns anos atrs, um novo framework, chamado Rails, surgiu baseado em uma linguagem relativamente desconhecida chamada Ruby. Rails (ou Ruby on Rails, como ela tambm conhecida) promoveu o conceito de conveno sobre configurao e provocou uma revoluo no mundo do desenvolvimento para web. Logo depois que o Rails surgiu, vrios clones diretos do PHP apareceram, juntamente com diversos frameworks inspirados no Rails, em vez de cpias diretas. No final de 2005, a Zend Technologies, uma empresa especializada em PHP, deu incio ao Zend Framework como parte de seu projeto PHP Collaboration para estimular o uso do PHP. O Zend Framework um projeto de cdigo aberto que disponibiliza um framework PHP para web e cujo objetivo tornar-se um dos frameworks padres em cima dos quais as aplicaes PHP sero baseadas no futuro.

1.3.2

O que h no Zend Framework?


O Zend Framework composto por vrios componentes distintos que podem ser agrupados em seis categorias de mais alto nvel. Pelo fato de ser um framework completo, voc tem tudo o que necessrio para desenvolver aplicaes web profissionais. No entanto, o sistema bastante flexvel e foi criado para permitir a escolha das partes do framework que so aplicveis sua situao. A partir da viso geral de alto nvel

O que o Zend Framework?

mostrada anteriormente na figura 1.3, a figura 1.4 mostra os componentes principais dentro de cada categoria do framework. Cada componente do framework contm vrias classes, incluindo a classe principal a partir da qual o componente recebe o seu nome. Por exemplo, o componente Zend_ Cong contm a classe Zend_Cong, juntamente com as classes Zend_Cong_Ini e Zend_Cong_Xml. Cada componente contm tambm vrias outras classes que no esto listadas na figura 1.4. Discutiremos as classes medida que avanarmos no livro e estudaremos cada um dos componentes.

Figura 1.4 O Zend Framework contm vrios componentes que incluem tudo o que necessrio para desenvolver uma aplicao prossional.

COMPONENTES DO MVC Os componentes do MVC disponibilizam um sistema MVC completo para desenvolver aplicaes que separam os templates da viso da lgica do negcio e dos arquivos de controle. O sistema MVC do Zend Framework composto pelo Zend_Controller (o controlador) e pelo Zend_View (a viso) com as classes Zend_Db e Zend_Service formando o modelo. A Figura 1.5 mostra o bsico do sistema MVC do Zend Framework, usando o Zend_Db como modelo. A famlia de classes do Zend_Controller oferece um padro de design de Controlador Frontal (Front Controller design pattern) que despacha solicitaes para as aes do controlador (tambm conhecidas como comandos) para que todo o processamento seja centralizado. Como era de se esperar de um sistema completo, o controlador suporta plug-ins em todos os nveis do processo e possui flex points embutidos que permitem mudar partes especficas do comportamento sem a necessidade de muito trabalho. O sistema de script da viso chamado de Zend_View , o qual oferece um sistema de template baseado em PHP. Isto significa que, de modo diferente do Smarty ou do PHPTAL, todos os scripts da viso esto escritos em PHP. O Zend_View oferece um sistema de plug-in auxiliar que permite a criao de cdigo de apresentao reutilizvel. Ele foi criado para permitir sobrescrita e atender a requisitos especficos, ou at mesmo para usar um sistema totalmente diferente de templates, como o Smarty. Trabalhando em conjunto com o Zend_View temos o Zend_Layout, que oferece agregao de vrios scripts de viso para construir uma pgina web completa.

10

CAPTULO 1

Introduo ao Zend Framework

O Zend_Db_Table implementa o padro Table Data Gateway que, juntamente com os componentes de servios de web, pode ser usado para compor a base do modelo dentro do sistema MVC. O modelo oferece a lgica de negcios da aplicao, que geralmente, mas nem sempre, baseada em banco de dados em uma aplicao web. O Zend_Db_Table usa o Zend_Db que disponibiliza um acesso independente de banco de dados, orientado a objetos, a diversos bancos de dados diferentes como MyS-

Figura 1.5 O uxo do MVC em uma aplicao Zend Framework usa um controlador frontal para processar a solicitao e delegar para um controlador de ao especco que usa modelos e vises para construir a resposta.

QL, PostgreSQL, SQL Server, Oracle e SQLite. A configurao mais simples dos componentes MVC pode ser feita usando este cdigo: require_once Zend/Controller/Front.php; Zend_Controller_Front::run(/path/to/your/controllers); No entanto, mais provvel que um arquivo mais complexo de bootstrap seja necessrio em uma aplicao no trivial. Exploraremos isto no captulo 2, onde desenvolveremos uma aplicao completa com o Zend Framework. As classes MVC trabalham em conjunto com algumas das classes principais que formam o ncleo de uma aplicao completa. O framework por si mesmo no exige configurao, mas alguma configurao para sua aplicao ser invariavelmente necessria (como os detalhes de login no banco de dados). O Zend_Cong permite que uma aplicao leia os dados de configurao a partir de arrays PHP ou de arquivos INI ou XML e ele inclui um sistema til de herana para suportar diferentes parmetros de configurao em diferentes servidores tais como de produo, de validao e de testes. A segurana est sempre presente na mente de todo desenvolvedor de PHP que se preza. Validao de dados de entrada e filtragem constituem a chave para uma aplicao segura. O Zend_Filter e o Zend_Validade esto disponveis para ajudar o desenvolvedor a garantir que os dados de entrada so confiveis para serem utilizados na aplicao. A classe Zend_Filter oferece um conjunto de filtros que tipicamente removem ou transformam dados indesejados da entrada medida que os mesmos passam pelo filtro. Por exemplo, um filtro numrico remove qualquer caractere da entrada que no seja numrico e um filtro de entidades HTML converte o caractere < na seqncia &lt;. Filtros adequados podem ser definidos para garantir que os dados sejam vlidos no contexto em que sero utilizados. O Zend_Validate oferece uma funo bastante semelhante ao do Zend_Filter, exceto pelo fato de oferecer uma resposta do tipo sim/no para a pergunta Este o dado que estou esperando?. A validao geralmente usada para garantir que o dado foi formado corretamente como, por exemplo, para garantir que o dado fornecido em um campo de endereo de e-mail seja realmente um endereo de e-mail. Em caso de falhas, o Zend_Validate tambm fornece uma mensagem indicando por que a entrada falhou na validao para que mensagens de erro adequadas possam ser fornecidas de volta ao usurio final.

O que o Zend Framework?

11

COMPONENTES DE AUTENTICAO E ACESSO Nem todas as aplicaes precisam identificar seus usurios, mas isto um requisito surpreendentemente comum. Autenticao o processo de identificar um usurio, geralmente atravs de um token como um par nome de usurio/senha, mas poderia igualmente ser por meio de uma identificao digital. O controle de acesso corresponde ao processo de decidir se o usurio autenticado tem permisso de acessar ou executar operaes em um dado recurso, como em um registro de banco de dados. Como existem dois processos separados, o Zend Framework oferece dois componentes separados: Zend_Acl e Zend_Auth. O Zend_Auth usado para identificar o usurio e tipicamente utilizado em conjunto com o Zend_Session, que pode armazenar estas informaes para solicitaes em vrias pginas (conhecido como persistncia de token). O Zend_Acl utiliza ento o token de autenticao para disponibilizar acesso a informaes privadas usando um sistema de controle de acesso baseado em papis (RBACL, ou role based access control list ). Flexibilidade um objetivo fundamental de design dentro do componente Zend_Auth. Existem tantas maneiras de se autenticar um usurio que o sistema Zend_Auth foi desenvolvido com o intuito do usurio fornecer seu prprio mtodo caso nenhuma das solues disponibilizadas sejam adequadas. Adaptadores de autenticao so disponibilizados para HTTP digest, tabelas de banco de dados, OpenID, InfoCard e LDAP. Para qualquer outro mtodo, voc precisa criar uma classe que estenda Zend_Auth_Adapter. Felizmente isto no difcil, como veremos no captulo 7. Como o Zend_Acl uma implementao de um sistema RBACL, o manual descreve este componente em termos abstratos. O RBACL um sistema genrico que pode prover acesso a qualquer coisa para qualquer pessoa e deste modo, termos especficos so desencorajados. Sendo assim, falaremos de papis (roles) solicitando acesso a recursos (resources). Um papel qualquer coisa que queira acessar algo que est sob a proteo do sistema Zend_Acl. Geralmente, para uma aplicao web, isto significa que um papel corresponde a um grupo de usurios que foi identificado atravs do Zend_Auth. Um recurso qualquer coisa que deve ser protegida. Geralmente um registro em um banco de dados, mas poderia igualmente ser um arquivo de imagem armazenado no disco. Como existe uma grande variedade de recursos, o sistema Zend_Acl nos permite criar nosso prprio recurso de forma bastante simples, implementando o Zend_Acl_Role_ Interface dentro de nossa classe. COMPONENTES PARA INTERNACIONALIZAO Vivemos em um mundo com mltiplas culturas e diversos idiomas, e, sendo assim, o Zend Framework oferece um conjunto rico de funcionalidades que permitem a localizao de sua aplicao para que ela fique de acordo com os usurios desejados. Isto cobre pequenas questes, desde garantir que o smbolo correto da moeda seja usado em todos os lugares, at dar suporte completo mudana de todo o texto da pgina para o idioma correto. Rotinas de data e de hora tambm so disponibilizadas com uma interface simples orientada a objetos, assim como os parmetros para as diversas formas pelas quais um calendrio pode ser apresentado. O Zend Framework disponibiliza a classe Zend_Local, que responsvel juntamente com Zend_Currency e Zend_Measure, por garantir que a linguagem e o idioma corretos sejam utilizados. O componente Zend_Translate responsvel pela traduo propriamente dita do texto de um website para o idioma desejado. COMPONENTES PARA COMUNICAO ENTRE APLICAES O Zend Framework oferece um componente para ler dados de outros websites. O Zend_Http_Client faz com que seja fcil coletar dados de outros websites e servios e depois apresent-los em seu site. Este componente funciona de forma bastante parecida com a extenso curl do PHP, mas est implementado em PHP, e, deste modo, pode ser usado em situaes em que curl no estiver habilitado. Quando voc precisa se comunicar com outra aplicao usando HTTP, o formato mais comum de transferncia uma de duas variaes do XML: XML-RPC e SOAP. O PHP5 contm um excelente suporte para SOAP embutido, e o Zend Framework disponibiliza

12

CAPTULO 1

Introduo ao Zend Framework

o Zend_XmlRpc_Client para permitir o fcil processamento do XML-RPC. Mais recentemente, o protocolo JSON (JavaScript Object Notation), que mais leve, vem ganhando espao, principalmente por causa da facilidade de processamento dentro do JavaScript de uma aplicao Ajax. O Zend_Json oferece uma soluo elegante tanto para a criao quanto para a leitura de dados JSON. COMPONENTES DOS SERVIOS DE WEB O Zend Framework oferece um conjunto rico de funcionalidades que permitem o acesso a servios oferecidos por outros fornecedores. Estes componentes cobrem feeds RSS genricos, juntamente com componentes especficos para trabalhar com as APIs pblicas do Google, do Yahoo! e da Amazon. O RSS passou por um longo caminho desde o seu nicho entre os blogueiros mais tcnicos e atualmente vem sendo usado pela maioria dos sites de notcias. O Zend_Feed oferece uma interface consistente para leitura de feeds nas vrias verses RSS e Atom disponveis, sem a necessidade de se preocupar com detalhes. O Google, o Yahoo!, a Amazon e outros websites disponibilizaram APIs pblicas para seus servios on-line para estimular os desenvolvedores a criarem aplicaes estendidas em cima do servio principal. Para a Amazon, a API oferece acesso aos dados em amazon.com na expectativa de que a nova aplicao ir estimular as vendas. De modo semelhante, o Yahoo! oferece acesso via API aos dados de fotos do Flickr para permitir servios adicionais aos usurios do Flickr, tais como os servios de impresso fornecidos pela moo.com. Os servios tradicionais do Yahoo!, tais como buscas, notcias e imagens tambm esto disponveis. O Zend Framework agrupa estes e vrios outros componentes em um conjunto de classes cujo prefixo Zend_Service. H Zend_Zervice_Amazon, Zend_Zervice_Delicious, Zend_Zervice_Simpy, Zend_Zervice_SlideShare e Zend_Zervice_Yahoo para mencionar somente alguns desta famlia. O Google possui vrias aplicaes on-line que permitem acesso via API e que so suportadas pelo componente Zend_Gdata. O Zend_Gdata oferece acesso s aplicaes de Blogger, Calendar, Base, YouTube e Code Search do Google. Por questes de consistncia, o componente Zend_Gdata disponibiliza os dados usando Zend_Feed, de modo que se voc puder processar um feed RSS, ento voc poder processar dados do Google Calendar tambm. COMPONENTES PRINCIPAIS Existe um conjunto de outros componentes disponibilizados pelo Zend Framework que no se enquadram facilmente em nenhuma outra categoria, e sendo assim, elas foram agrupadas na categoria principal. Esta variedade de componentes inclui classes para caching, buscas e criao de PDF. A classe bem esotrica de medidas tambm se encontra nesta categoria. Todos querem um website mais rpido e caching uma das ferramentas que pode ser usada para ajudar a agilizar o seu website. Embora no seja um componente sexy, o Zend_Cache oferece uma interface genrica e consistente para fazer cache de qualquer dado em diversos sistemas back end, tais como discos, bancos de dados ou at mesmo memria compartilhada do APC. Esta flexibilidade garante que voc pode comear com pouca coisa no Zend_Cache, e, medida que a carga de seu site aumentar, a soluo de caching pode crescer junto para garantir que voc tire o mximo proveito do hardware de seu servidor. Todo site moderno oferece a facilidade de busca, mas a maioria to ruim que os usurios do site preferem procurar via Google a usar o prprio sistema do site. O Zend_Search_Lucene baseado no mecanismo de busca Lucene do Apache para Java, e oferece um sistema de busca de textos bem profissional que permitir a seus usurios encontrar o que eles estiverem procurando. Como necessrio a um bom sistema de buscas, o Zend_Search_Lucene suporta buscas com classificao (em que os melhores resultados ficam no topo), juntamente com um sistema bastante capacitado para consultas. Outro componente principal o Zend_Pdf, que cria arquivos PDF via programao. O PDF um formato bastante portvel para documentos a serem impressos. Voc

Filosofia de design do Zend Framework

13

pode controlar a posio de tudo na pgina com preciso em nvel de pixels sem ter de se preocupar com diferenas no modo como os browsers de web mostram a pgina. O Zend_Pdf foi totalmente escrito em PHP e pode criar novos documentos PDF ou carregar arquivos existentes para edio. O Zend Framework disponibiliza um componente de e-mail bem robusto, o Zend_ Email, que permite o envio de e-mails em texto normal ou em HTML. Como em todos os componentes do Zend Framework, a nfase foi colocada na flexibilidade e em defaults criteriosos. No mundo do e-mail, isto significa que o componente permite o envio de e-mails usando SMTP ou por meio do comando mail() padro do PHP. Transportes adicionais podem ser facilmente inseridos no sistema escrevendo-se uma nova classe que implemente Zend_Email_Transport_Interface. No envio de um e-mail, uma interface orientada a objetos usada: $mail = new Zend_Mail(); $mail->setBodyText(Meu primeiro email!) ->setBodyHtml(Meu <b>primeiro</b> email!) ->setFrom(rob@akrabat.com, Rob Allen) ->addTo(alguem@exemplo.com, Algum Destinatrio) ->setSubject(Al de Zend Framework em Ao!) ->send(); Este trecho de cdigo tambm mostra o uso de uma interface fluente - cada funo membro retorna a instncia de um objeto, de modo que as funes possam ser encadeadas tornando o cdigo mais legvel. Interfaces fluentes so comumente usadas nas classes do Zend Framework para facilitar a utilizao das classes. Como voc pode notar, o Zend Framework contm um conjunto bem abrangente de componentes que disponibilizam a maior parte das fundaes para um website. medida que o framework continuar a crescer, mais componentes sero adicionados e todos os componentes seguiro a filosofia de design do Zend Framework, o que garantir a qualidade e a consistncia do mesmo.

1.4

Filosoa de design do Zend Framework


O Zend Framework possui diversos objetivos conhecidos que compem a filosofia de design do framework. Se estes objetivos no combinam com sua viso sobre desenvolvimento de aplicaes PHP, ento o Zend Framework provavelmente no se encaixar bem na sua maneira de fazer as coisas. Todos os componentes do framework atendem a estes objetivos, o que garante a utilizao do cdigo do framework no futuro.

1.4.1

Componentes de alta qualidade


Todo o cdigo dentro da biblioteca do Zend Framework ser de alta qualidade. Isto significa que o mesmo ser escrito usando os recursos do PHP5 e no ir gerar nenhuma mensagem do parser do PHP (ou seja, compatvel com E_STRICT). Isto significa que qualquer mensagem do parser do PHP em seus logs vir de seu cdigo, e no do framework, o que ir ajudar consideravelmente no debugging! O Zend Framework tambm define alta qualidade na incluso da documentao, de modo que o manual para um dado componente to importante quanto o seu cdigo. Espera-se que seja possvel desenvolver aplicaes inteiras sem nenhuma dependncia de bibliotecas externas (a menos que voc queira). Isso significa que o Zend Framework um framework de pilha completa (como Ruby on Rails ou o framework Django Python), em vez de um conjunto de componentes isolados, embora com um nvel muito menor de acoplamento. Isto garante que haver consistncia nos componentes: como so nomeados, como funcionam e como os arquivos so organizados em subdiretrios. Dito isto, importante frisar que o Zend Framework modular com poucas dependncias entre os mdulos. Isto garante que ele funcionar bem com outros frameworks e bibliotecas, e que voc poder usar muito ou pouco dele, de acordo

14

CAPTULO 1

Introduo ao Zend Framework

com o que desejar. Por exemplo, se voc quiser usar apenas a criao de PDF, voc no precisa usar o sistema MVC.

1.4.2

Pragmatismo e Flexibilidade
Outro objetivo do design do framework o mantra No mexa no PHP. O modo PHP simples, com solues pragmticas, e o Zend Framework foi criado para refletir isto e para fornecer uma soluo simples para a maioria dos desenvolvedores. O Zend Framework tambm poderoso o suficiente para permitir o uso especializado por meio de extenses. Os desenvolvedores das partes principais fizeram um timo trabalho ao cobrir os cenrios mais comuns e disponibilizar flex points para permitir a fcil alterao do comportamento padro para aqueles que quiserem algo mais poderoso ou especializado.

1.4.3

PI Adequada
Todos os colaboradores do Zend Framework assinaram um Contrato de Licena de Colaborador (CLA, ou Contributor License Agreement). Esta licena um contrato com a Zend, que garante o status de propriedade intelectual da colaborao. Ou seja, o colaborador garante que (at onde ele est ciente), tem o direito de fazer contribuies e que o direito de propriedade intelectual de mais ningum est sendo infringido. O objetivo disto ajudar a proteger todos os usurios do framework com relao a possveis questes legais relacionadas com propriedade intelectual e copyright. O risco mnimo, mas as aes legais da SCO contra a AutoZone mostram que uma acusao a um usurio por causa de uma alegada infrao de copyright de cdigo uma possibilidade. Como em todos os casos, o melhor estar preparado. O cdigo-fonte do Zend Framework est licenciado sob a nova licena BSD. Isto d bastante liberdade aos usurios para utilizarem o cdigo em diversas aplicaes diferentes, desde projetos com cdigo aberto at produtos comerciais. Quando combinado com os requisitos de PI adequada, o Zend Framework est bem posicionado para ser usado por qualquer pessoa para qualquer propsito.

1.4.4

Suporte da Zend Technologies


Uma considerao bvia, porm importante, que o Zend Framework suportado pela empresa Zend Technologies. Isto significa que pouco provvel que o framework desaparea por falta de atividade dos desenvolvedores das partes principais ou pela falta de atualizaes para a ltima verso principal do PHP. A Zend Technologies tambm possui recursos para ter desenvolvedores em tempo integral dedicados ao projeto e para ajudar a desenvolv-lo em um ritmo consistente. Ns acabamos de cobrir o Zend Framework em alguns detalhes, observando o porqu de sua existncia, o que ele contm e seus objetivos gerais. Vrios frameworks de PHP atendem s necessidades de diferentes programadores, ento vamos dar uma olhada na posio do Zend Framework quando comparado a outros frameworks.

1.5

Frameworks PHP alternativos


Considerando que o uso do PHP bastante amplo, nenhum framework nico ser adequado a todos. No mundo PHP, existem vrios outros frameworks disputando sua ateno e todos possuem seus pontos fortes e fracos. A Tabela 1.1 lista alguns dos pontos fortes e fracos destes frameworks. Ns escolhemos quatro frameworks arbitrariamente que possuem certa evidncia na comunidade, mas estes no constituem, de forma alguma, as nicas opes. Embora este livro seja a respeito do Zend Framework, vale a pena investigar os demais frameworks para ver se eles atendem de maneira mais adequada aos seus requisitos. Se voc ainda precisa suportar PHP4, ento ser necessrio usar o CakePHP ou o CodeIgniter, pois os demais no suportam PHP4. No entanto, a esta altura j hora de deixar o PHP4 para trs, pois o mesmo foi oficialmente descontinuado.

Resumo
Tabela 1.1 Recursos principais do Zend Framework, CakePHP, CodeIgniter, Solar e Symfony

15

1.6

Resumo
Neste captulo, ns vimos o que o Zend Framework e por que ele til para escrever aplicaes web. Ele permite o rpido desenvolvimento de aplicaes profissionais, oferecendo um conjunto bem completo de componentes que usam as melhores prticas de design da orientao a objetos. O framework contm diversos componentes, desde um controlador MVC at um gerador de PDF e uma ferramenta poderosa para buscas. O Zend Framework possui um conjunto de princpios de design que garante que o cdigo seja de alta qualidade e bem documentado. Um CLA estabelecido com todos os colaboradores, de modo que o risco de problemas relacionados com PI do framework mnimo, e com a Zend Technologies comprometida com a manuteno do framework, podemos ter certeza sobre o futuro a longo prazo das aplicaes construdas com base nesta tecnologia. Este livro oferece exemplos do mundo real e deste modo, teremos a tecnologia Ajax inserida sempre que for apropriado. Agora, vamos avanar para o tpico principal deste livro e ver como desenvolver uma aplicao Zend Framework simples, porm completa no captulo 2.

Vous aimerez peut-être aussi