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()egetAlpha().
- 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_Mailpara 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.
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_DBpara 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_FeedeZend_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: O
Zend_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_HTTPClientpara 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_PDFpara 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_Mailpara 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_Searchpara 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_Servicepara 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.
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.
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.
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ê.
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.
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.
Aprender
-
O Web site da Zend Framework mantém a
documentação mais recente, assim como as
perguntas mais frequentes sobre a instalação.
- Saiba mais sobre
Zend Core para IBM, um ambiente de desenvolvimento e produção de PHP transparente, de fácil instalação e
suportado que possui integração com bancos de dados DB2 e Informix.
-
Para entender melhor as metas do projeto do leitor de alimentação, leia "
Introduction to Syndication, (RSS) Really Simple Syndication" de Vincent Luria.
-
Thought Storms
ModelViewController explica o MVC e a controvérsia e confusão a seu redor.
-
O Web site phpPatterns explica
MVC do ponto de vista de PHP.
-
PHP.net é o recurso central para desenvolvedores de PHP.
-
Verifique a "
Lista de Leitura Recomendada de PHP."
-
Navegue por todo o
conteúdo de PHP em developerWorks.
-
Expanda suas qualificações em PHP verificando, no IBM developerWorks,
Recursos de Projeto PHP.
-
Para ouvir entrevistas e discussões interessantes para desenvolvedores de software, verifique os
podcasts do developerWorks.
-
Usando um banco de dados com PHP? Verifique
Zend Core para IBM, um ambiente de desenvolvimento e produção de PHP pronto, transparente e de fácil
instalação que suporta o IBM DB2 V9.
-
Mantenha-se atualizado com
Eventos Técnicos e Webcasts do developerWorks.
-
Verifique conferências, feiras comerciais, webcasts e outros
Eventos futuros no mundo que sejam de interesse de desenvolvedores de software livre da IBM.
-
Visite Zona de
Software Livre do developerWorks para obter informações extensivas sobre como executar ações, sobre ferramentas e atualizações de projetos para ajudá-lo a se desenvolver com tecnologias de software livre e
usá-las com produtos IBM.
-
Assista e aprenda sobre as tecnologias IBM e de software livre e funções de produtos gratuitamente com os
Demos On Demand do developerWorks.
Obter produtos e tecnologias
-
Faça download da Zend Framework da
Zend Technologies.
-
Faça download do PHP V5.x de
PHP.net.
-
Inove seu próximo projeto de desenvolvimento de software livre com
software de avaliação da IBM, disponível para download ou em DVD.
-
Faça download do
versões de avaliação de produtos IBMe entre em contato com ferramentas de desenvolvimento de aplicativos
e produtos de middleware do DB2®, Lotus®, Rational®, Tivoli®e WebSphere®.
Discutir
-
Participe de Blogs do
developerWorks e envolva-se na comunidade developerWorks.
-
Participe do
PHP Forum: Developing PHP applications with IBM Information Management products (DB2, IDS) do developerWorks.
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)