Entendendo a Zend Framework, Parte 1: O Básico

Construindo o leitor perfeito

Nós, programadores, somos um bando paradoxalmente preguiçoso. Com isso quero dizer que gastamos horas, até dias, criando algo que nos permita concluir uma tarefa em 30 segundos em vez de cinco minutos. Portanto, a criação do Zend Framework não seja uma surpresa. Quer dizer que você não ouviu falar da Zend Framework? Não se preocupe — irá. Este artigo fornece uma visão de alto nível da Zend Framework, explicando seus conceitos gerais e preparando-o para o restante desta série " Entendendo a Zend Framework", que entra nos detalhes narrando a criação de um novo leitor de alimentação on-line RSS/Atom. Não realizamos muita codificação neste artigo, mas no restante da série, você deve estar familiarizado com PHP.

Nicholas Chase, Consultant, Site Dynamics Interactive Communications

Nicholas Chase esteve envolvido no desenvolvimento de Web sites para empresas como a Lucent Technologies, a Sun Microsystems, a Oracle e a Tampa Bay Buccaneers. ele foi professor de física no ensino médio, um gerente de instalação de lixo radioativo de nível baixo, um editor de revista on-line de ficção científica, um engenheiro de multimídia, um instrutor de Oracle e o executivo chefe em tecnologia de uma empresa de comunicações interativas. Ele é o autor de diversos livros, incluindo XML Primer Plus (Sams)



27/Jun/2006

Zend Framework

Alguns aos atrás, PHP estava no topo do heap de linguagens de script poderosas, mas de fácil utilização — pelo menos em questão de popularidade. Estava instalada na maioria dos servidores da Web baseados em UNIX® e Linux®. E se você era um programador, era fácil obter uma conta de hosting que permitiria usá-la. Ruby estava no mercado há algum tempo, mas não muitas pessoas o usavam. Se quisesse construir um Web site usando conteúdo gerado dinamicamente, mas não estava bem certo de que precisava ir tão longe quanto usar um servidor de aplicativos como o J2EE, você provavelmente usaria PHP. Era rápido, fácil de aprender, conveniente e não precisava aprender Perl.

E, então, — de repente, parecia que — o cenário havia mudado. Ruby on Rails atingiu o mundo de programação como um caminhão. Orientado a objetos e baseado no paradigma Model-View-Controller (MVC), Ruby on Rails apresentou uma maneira de fazer o que todos nós queremos fazer: criar um Web site com praticamente nenhum esforço. É claro que ainda havia dois problemas. Por um lado, era necessário aprender uma nova linguagem de programação. Essa não é uma tarefa trivial, independentemente da linguagem. Por outro lado, se você encontrasse um host que permitisse que você executasse Ruby on Rails, estava com muita sorte. A maioria não permitia. Se você tiver a mesma conta há uma década (como eu), você pode ser um pouco lento para alternar, simplesmente porque eles não têm uma nova linguagem de programação. Então, é claro, havia o problema de todo o código PHP existente que você havia escrito ao longo dos anos. Você realmente queria jogar tudo na vala e começar de novo? Claro que não!

O que um programador de PHP corporativo deve fazer? Criar uma nova estrutura que incorpore muitas dessas novas vantagens, é isso que deve fazer. E, assim, a Zend Framework nasceu.

A Zend Framework fornece código limpo estável, completo com — e, talvez, o mais importante — direitos de propriedade intelectual limpos. PHP está ganhando terreno no espaço corporativo, mas, se você for uma empresa Fortune 500, não quer correr o risco com um módulo enviado a um repositório que pode ou não ser propriedade intelectual de alguma outra empresa.

O que é a Zend Framework, exatamente? A Zend Framework:

  • é baseada em PHP
  • é orientada a objetos
  • usa o paradigma MVC
  • possui contribuidores de software livre
  • possui contribuidores que assumem responsabilidade pelo fato de seu código não ser propriedade intelectual de terceiros

Também tem como meta facilitar sua vida de programação, não apenas em geral, instituindo o padrão MVC, mas também para coisas específicas que você tende a fazer o tempo todo, como acessar bancos de dados ou saída para um arquivo PDF. (OK — você provavelmente não emite saída para um arquivo PDF o tempo todo. Mas tenho certeza de que faria isso se fosse mais fácil.)

Componentes da Zend Framework incluem:

Zend_Controller
Esse módulo fornece o controle geral para o aplicativo. Converte pedidos em ações específicas e assegura que sejam executados.
Zend_Db
Esse é baseado em PHP Data Objects (PDO) e fornece acesso a bancos e dados de forma genérica.
Zend_Feed
Esse facilita o consumo de alimentações RSS e Atom.
Zend_Filter
Esse fornece funções de filtragem de string, como isEmail() e getAlpha().
Zend_InputFilter
Para Zend_Filter, esse é projetado para trabalhar com arrays como entradas de formulário.
Zend_HttpClient
Esse possibilita executar pedidos HTTP facilmente.
Zend_Json
Esse possibilita converter objetos PHP facilmente em JavaScript Object Notation e vice-versa.
Zend_Log
Esse fornece funcionalidade de criação de log de propósito geral.
Zend_Mail
Esse possibilita que você envie texto e e-mail MIME com diversas partes.
Zend_Mime
Esse é usado pelo Zend_Mail para ajudar a decodificar mensagens MIME.
Zend_Pdf
Esse possibilita criar novos documentos PDF e carregar e editar documentos PDF existentes.
Zend_Search
Esse possibilita executar procuras sofisticadas em seu próprio texto. Por exemplo, é possível construir um mecanismo de procura que retorne resultados baseados na relevância ou em outros fatores.
Zend_Service_Amazon, Zend_Service_Flickr e Zend_Service_Yahoo
Esses fornecem fácil acesso a essas APIs de serviço da Web.
Zend_View
Esse manipula a parte "view" do padrão MVC.
Zend_XmlRpc
Esse possibilita criar facilmente um cliente XML-RPC. (Os recursos do servidor são planejados para o futuro.)

Agora, vamos dar uma olhada para onde estamos indo e o que vamos fazer.


O Projeto

Para mostrar todos os pontos positivos e negativos da Zend Framework, precisamos de um projeto que cubra muito terreno. Tudo bem, pois meu projeto favorito ainda é o leitor de alimentação on-line. Por quê? Porque ainda não encontrei um que realmente faça o que desejo. Toda vez que uma nova tecnologia aparece na minha frente, tento fazer um que seja melhor do que os que usei antes. Então, vamos criar um novo serviço de leitor de alimentação on-line RSS/Atom.

O mundo realmente precisa de outro leitor de alimentação on-line? Talvez. Mas eu não ligo se for o único a usá-lo. E isso é o que importa: a Zend Framework tem como meta fazer as coisas simples o suficiente de forma que eu posso assumir projetos simplesmente porque eu quero e não porque justifiquei o mesmo com centenas de milhares de dólares em pesquisa. Então, o que essa maravilha de virtude de masterização de novidades faz? Por enquanto, deve:

  • Possibilitar que usuários salvem conjuntos de alimentações ou assinaturas
  • Possibilitar que usuários leiam alimentações e itens individuais
  • Possibilitar que usuários salvem postagens individuais
  • Possibilitar que usuários procurem texto específico nas entradas salvas
  • Possibilitar que usuário leiam facilmente páginas que não têm uma alimentação RSS
  • Possibilitar que usuários imprimam coletas de postagens

Ao longo desta série, vamos mostrá-lo como fazer tudo isso usando a Zend Framework. A série será executada da seguinte forma:

Parte 1: O Básico
Este artigo, que explica o projeto em geral e a Zend Framework.
Parte 2: Incluindo um Banco de Dados
Esse tutorial mostra como usar o módulo Zend_DB para criar e manipular o banco de dados central usado para armazenar informações de assinatura, assim como entradas salvas e outras informações.
Parte 3: As Alimentações
Agora, nós incluímos alimentações na equação, possibilitando que o usuário crie uma conta, assine alimentações específicas e exiba essas alimentações. Esse tutorial usa os módulos Zend_Feed e Zend_Inputfilter , o último usado para verificar endereços de e-mail e para remover tags HTML das entradas de alimentação.
Parte 4: Quando Não Há Nenhuma Alimentação: OZend_HTTPClient
Nem todos os sites têm alimentações, mas ainda é útil controlar tudo em um local. Esse artigo mostra como usar o módulo Zend_HTTPClient para criar um proxy para puxar dados para a interface do leitor de alimentação.
Parte 5: Criando Arquivos PDF
Esse tutorial explica como usar o módulo Zend_PDF para possibilitar que o usuário crie um PDF customizado de artigos, imagens e resultados de procura salvos.
Parte 6: Enviando e-mail
Esse artigo explica como usar o módulo Zend_Mail para alertar usuários sobre novas postagens e alimentações assinadas e, até mesmo, enviar essas postagens usando e-mail em HTML.
Parte 7: Procurando
Esse artigo explica como usar o módulo Zend_Search para procurar entradas de blog atuais e salvas existentes para um termo de procura específico e retornar resultados classificados.
Parte 8: Incluindo Informações e Serviços Relacionados
Esse tutorial explica como usar os módulos Zend_Service para puxar informações de outros serviços — especificamente, Amazon, Flickr e Yahoo! A interface usará Ajax para puxar livros, fotos e resultados de procura relacionados a uma entrada de blog atual ou de um termo de procura no qual o usuário clica.
Parte 9: Incluindo Ajax
A Zend Framework facilita incluir interações Asynchronous JavaScript + XML (Ajax) em seu aplicativo convertendo automaticamente objetos PHP nativos para e a partir de JavaScript Object Notation (JSON). Esse artigo mostra como incluir essa funcionalidade no leitor de alimentação. Também inclui uma descrição básica de JSON.

Configurando

A Zend Framework não requer nenhuma instalação específica, mas você precisa manter alguns requisitos em mente. A Zend Framework requer o PHP V5. É compatível com a V5.0.4 e acima, portanto, você pode usar a V5.1, mas não precisa. Você deve, no entanto, assegurar que o diretório library, onde a estrutura espera localizar todos os seus arquivos, esteja incluído no include_path. Para fazer isso, certifique-se de configurá-lo no arquivo php.ini, como em:

; Windows: "\path1;\path2" include_path = ".;c:\php\includes;e:\sw\zendframework\library"

É isso.


O Padrão MVC

Com relação a design gráfico, não consigo fazer uma apresentação cheia de sinais luminosos. Não é algo que faço bem. No entanto, dê-me um design para montar feito por alguém talentoso e posso fazer essa interface fazer o que você quiser. Portanto, é muito útil poder dividir o trabalho envolvido em projetar um aplicativo baseado na Web para que os designers possa fazer o que fazem bem, os codificadores possas fazer o que fazem bem e os DBAs possam fazer o que fazem bem. Essa é a essência do padrão MVC, que divide um projeto em três camadas.

Definindo Model-View-Controller

Padrões são, por definição, maneiras de fazer as coisas que evoluíram ao longo dos anos porque são uma boa solução para um problema. O padrão Model-View-Controller (MVC) não é uma exceção. Devido a essas outras maneiras orgânica de criação, ocasionalmente, você encontrará diferenças nas definições. Por exemplo, algumas definições do padrão MVC definem a função do controlador simplesmente alterar estado, com toda a lógica de negócios na camada do modelo. No fim, a única coisa que importa é que o aplicativo faça o que você deseja que ele faça de forma mais eficiente.

A camada do modelo consiste na representação dos dados reais. Por exemplo, em nosso projeto do leitor de alimentação, temos usuários, alimentações e entradas de alimentação. A representação deles no banco de dados "modela" conceitualmente a estrutura dos mesmos e, assim, consiste na camada do modelo.

A camada da visualização consiste na lógica que realmente define a aparência dos dados exibidos. Não decide o que os dados exibidos são — somente a aparência deles. Em um mundo real, esse modelo não contém nenhuma lógica. Simplesmente aceita as informações fornecidas e exibe as mesmas.

O controlador é o que realmente define o que são os dados. O controlador, na verdade, é onde toda a lógica reside. Na Zend Framework, essa camada controla as ações a serem executadas. Por exemplo, se eu quiser exibir um único objeto de item de alimentação, a responsabilidade é analisada como: o objeto do item de alimentação tem um controlador, que define o que ocorre quando a ação de exibição é chamada. Essa ação retorna a chamada para obter os dados desejados do modelo (ou seja, o banco de dados ou outro armazenamento persistente), em seguida, alimenta esses campos — como título, conteúdo, permalink, etc. — na visualização, o que simplesmente a exibe no navegador.

Sem dúvidas, esse é um ponto de partida para a maioria dos programadores de PHP. PHP sempre foi uma linguagem processual, apesar da presença de objetos. No entanto, as compensações definitivamente valem a pena. Construir no padrão MVC é muito mais fácil do que construir um aplicativo no qual tudo está misturado.

Agora, vamos dar uma olhada no que espera-se de você.


Diretrizes de Codificação

Quando você está codificando para a Zend Framework ou mesmo com a Zend Framework, espera-se que você siga determinadas diretrizes. Elas foram projetadas para facilitar os projetos em grupo. Ou seja, definindo as convenções de codificação, você não apenas evitará problemas posteriormente, mas também facilitará a leitura de seu código por outras pessoas. A documentação da Zend Framework inclui diversas páginas de diretrizes, incluindo:

  • Certifique-se de que os arquivos estejam limpos. Ou seja, nenhum espaço em branco à esquerda ou a direita que possa chamar um servidor da Web para enviar, inesperadamente, conteúdo antes de cabeçalhos, deslocamentos padrão de quatro espaços, etc.
  • Inicie seu nome de classe com Zend_ se, somente se, tiver a intenção de fazer parte da própria Zend Framework, em vez de simplesmente um aplicativo que usa a estrutura.
  • Sublinhados são proibidos em nomes de funções. Use caixa alternante iniciada por minúscula (como em getTodaysDate()), em vez disso.
  • Inicie os nomes de suas variáveis com um sublinhado somente se forem privadas ou protegidas.
  • Declare todas as variáveis como privada, protegida ou pública. não use var.
  • Use a tag PHP padrão, como em <?php ?>— não o formato abreviado (<? ?>).
  • Certifique-se de que seu código seja de fácil leitura. Ou seja, quando você usa um ponto (. ) para concatenar texto, certifique-se de colocar espaços antes e após o ponto para torná-lo mais legível. O mesmo ocorre para incluir espaços após vírgulas ao declarar uma array.
  • Se você precisar passar por referência, faça isso somente na declaração de uma função. Passar por referência do tempo de chamada é proibido.
  • Todo arquivo PHP deve incluir documentação que pode ser lida pelo PhpDocumentor e as diretrizes de codificação especificam determinadas tags mínimas.

Essa não é uma lista completa de diretrizes, é claro, mas deve dar uma idéia dos tipos de requisitos. Verifique a documentação para obter a lista completa, para que seu código possa atender mais facilmente a promessa de facilitar o compartilhamento de projetos PHP.


Resumo

A Zend Framework fornece uma nova maneira específica de IP para construir seus aplicativos PHP. Dessa forma, tem como meta melhorar sua experiência de codificação PHP. Nesta série, usamos a Zend Framework para construir um leitor de alimentação RSS/Atom. Partes adicionais da série cobrirão acesso a dados, procura, serviços da Web e outras partes da estrutura. Na Parte 2, criamos o sistema de login e iniciamos a construção do banco de dados.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=382645
ArticleTitle=Entendendo a Zend Framework, Parte 1: O Básico
publish-date=06272006