Esta série foi projetada para desenvolvedores de PHP que desejam começar a usar uma estrutura, mas não examinaram as estruturas disponíveis em detalhes. Esta série examina por que as três estruturas que estão sendo examinadas foram escolhidas, como instalar cada uma das estruturas e você terá uma boa ideia do aplicativo de teste que irá estender em cada estrutura. Pode parecer muito, mas não se preocupe — dividimos em partes gerenciáveis.
A Parte 1 desta série determina o escopo para a série, introduz as estruturas que estão sendo examinadas, cobre a instalação e retira do escopo o primeiro aplicativo de teste que você irá construir. (Ufa!)
Parte 2 o direciona pela construção do aplicativo de amostra em cada uma das três estruturas, realçando suas semelhanças e diferenças.
Parte 3 inicia com a extensão do aplicativo de teste, em seguida, lida com exceções à regra. Todas as estruturas funcionam bem ao executarem as tarefas para as quais foram projetadas. Precisar fazer algo que a estrutura não foi construída para fazer ocorre em todo projeto. Este artigo verifica essas instâncias.
Parte 4 foca principalmente em suporte ao Ajax. O uso do Ajax, usando código nativo e bibliotecas de terceiros, é examinado — especificamente, como cada estrutura se comporta e aceita bibliotecas populares específicas.
Parte 5 lida com o trabalho fora das estruturas. Uma única tarefa é identificada (script de atualização noturna) e o processo para realizar essa tarefa é examinado em cada estrutura.
Este artigo tem muito material. Você deve obter velocidade rapidamente. Há três estruturas sendo examinadas. Quais três? Por que essas três? Quais outras estruturas existem? Por que não essas, em vez de aquelas? Tantas perguntas! Mas a maioria delas será respondida antes de você passar pelo processo de instalação de cada estrutura. Em seguida, você aprenderá sobre o aplicativo de teste usado nas partes subsequentes desta série. Imediatamente, você começará a obter um senso de como as diferentes estruturas funcionam de forma diferente e os tipos de coisas que fazem iguais.
Antes de iniciar, é necessário ter um ambiente no qual é possível trabalhar. Os requisitos são mínimos:
- Um servidor HTTP que suporta sessões (e preferivelmente mod_rewrite) — Esta série foi escrita usando o Apache V1.3 com mod_rewrite ativado.
- PHP V5.1.4 ou posterior — Nem todas as estruturas que estão sendo examinadas requerem esse nível de release de PHP, mas, por questão de facilidade, todas as estruturas usarão a mesma instalação PHP. Essa série foi escrita usando PHP V5.2.3.
- Uma instalação razoavelmente recente de MySQL — Diversas outras opções de banco de dados estão disponíveis e são suportadas, mas esta série e o aplicativo de amostra foram escritos usando MySQL V5.0.37.
- Um sistema operacional que suporta o PHP V5.2.4 ou posterior e MySQL — Chamadas do sistema Linux® é usado nesta série. Se você for um usuário do Windows® , será necessário fazer ajustes óbvios, principalmente ao criar os diretórios mencionados abaixo.
Supõe-se que você já conheça o PHP, o design do aplicativo e como trabalhar em um banco de dados. Não é necessário ter usado uma estrutura antes, mas você deve, certamente, estar pronto para entrar de cabeça nisso.
Antes de falar sobre quais estruturas foram selecionadas, vale a pena falar sobre o que é uma estrutura.
A idéia por trás de uma estrutura é oferecer um design que pode ser usado em diversos aplicativos. Todos os aplicativos têm diversas itens básicos em comum — especificamente, algum tipo de interface com um banco de dados, alguma lógica de aplicativo, algo que apresente o aplicativo para o usuário. Se você tiver escrito muitos aplicativos PHP, você conhece a aparência. Você provavelmente escreveu um conjunto de funções ou uma classe que lê e grava dados a partir do banco de dados. Você pode ter usado um mecanismo de modelo como o Smarty para gerenciar sua UI. Você certamente escreveu um monte de código PHP que fazia coisas como analisar envios de formulários e tomar decisões baseadas nos dados enviados. E se você tiver escrito muito aplicativos, provavelmente fez as mesmas coisas básicas repetidamente, às vezes roubando código de um aplicativo para usar em outro.
Uma estrutura é projetada para fornecer uma estrutura para esses elementos comuns (iteração de banco de dados, camada de apresentação, lógica de aplicativo) para que você gaste menos tempo escrevendo o código da interface do banco de dados ou as interfaces da camada de apresentação e mais tempo escrevendo o próprio aplicativo. A arquitetura representada pela divisão de um aplicativo dessa maneira é chamada de Model-View-Controller (MVC). Model refere-se a seus dados, View à sua camada de apresentação e Controller refere-se à lógica do aplicativo ou de negócios. Uma discussão completa sobre MVC está fora do escopo deste artigo, mas você deve pesquisar sobre MVC e entender por que tanta comoção (consulte Recursos).
Há diversas estruturas disponíveis para praticamente toda linguagem. Selecionar a certa para as suas necessidades pode ser um tanto quanto difícil, principalmente se não tiver usado nenhuma delas antes. Apesar de conselhos e opiniões de coletas e autores confiáveis do developerWorks poderem ser úteis nessa área, há, na verdade, somente um princípio direcional que deve ser seguido ao selecionar qualquer estrutura: uma estrutura é tão boa somente quanto o tempo e esforço que economiza para todos. Uma estrutura não é boa se funcionar bem para você, mas causar um aumento significativo em chamadas de suporte. Uma estrutura não é boa se for fácil de suportar, mas obstrui, em vez de ajudar, seu desenvolvimento. Uma estrutura é inútil se for elegante, mas causa problemas de suporte e desenvolvimento.
Ao selecionar uma estrutura para seu projeto, considere todos os envolvidos, de cima até em baixo, e ao avaliar a estrutura, tenha o impacto em terceiros em mente.
Ao considerar a adoção de uma estrutura, olhe seu aplicativo de perto e pergunte-se se ele precisa de uma estrutura. Uma estrutura não é uma necessidade. Os aplicativos corporativos continuarão a ser escritos sem o uso de estruturas. Uma estrutura ajudará no projeto? Economizará tempo e esforço de todos? Seu aplicativo terá melhor desempenho em uma estrutura? Fornecerá a estabilidade que está faltando? Se a resposta para qualquer uma dessas perguntas for sim, você deve considerar a adoção de uma estrutura. Se a resposta a todas essas perguntas for não, uma estrutura somente complicará as questões.
Infelizmente, restrições de tamanho e escopo não permitem uma cobertura abrangente de todas as estruturas PHP disponíveis. Esta série foca três estruturas:
- Zend Framework
- symfony
- CakePHP
Elas foram selecionadas com base em diversos fatores, mas podem ser melhor classificadas como "A Conhecida por seu Chefe", "A que Outra Pessoa Já Instalou" e "Aquela sobre a qual Eles Estavam Falando". Eu incentivo você a pesquisar CodeIgniter, Seagull, Web Application Component Toolkit (WACT), PRADO, Zoop, PHP on Trax ou qualquer uma das muitas estruturas PHP disponíveis. A seleção da estrutura é uma opção muito pessoal, muito semelhante à seleção da linguagem na qual escrever o código. Esta série não irá indicar qual estrutura é melhor, ou pior, do que as outras. Onde uma estrutura faz algo bem, será destacado. Onde uma estrutura parecer difícil de gerenciar, isso será destacado também. Mesmo se não formos abrangentes em nossa cobertura das estruturas em miríade, a abordagem feita ajudará a pesar os pontos fortes e fracos das outras estruturas. Você precisa formar suas próprias opiniões sobre as estruturas que estão sendo examinadas, quais você gosta e o que você decide seguir.
Todos conhecem a Zend — "A Empresa PHP". Ao fazer download e instalar PHP, você está transferindo por download da Zend e faz isso desde por volta da V3. Além de distribuir PHP, a Zend Technologies tem oferecido uma ampla gama de tecnologias de suporte para PHP ao longo dos anos. Não deve ser nenhuma surpresa que a Zend ofereça uma estrutura para PHP — uma popular, com 2 milhões de downloads até a presente data. Se seu chefe ouviu falar de uma estrutura PHP, provavelmente, a Zend Framework é a própria.
Patrocinada pela Sensio, a symfony "almeja acelerar a criação e manutenção de aplicativos da Web e substituir as tarefas de codificação repetitivas por poder, controle e prazer". A estrutura da symfony foi usada em todo o mundo em diversos aplicativos de nível corporativo, provavelmente, com maior destaque em Askeet e Yahoo! Bookmarks. Grande chance de, se alguém que você conhece tiver instalado, usado ou brincado com uma estrutura PHP, essa estrutura ser a symfony.
Pegando muito emprestado de Ruby on Rails, CakePHP almeja trazer simplicidade e escalabilidade para as estruturas PHP. Reconhecida de forma consistente como uma estrutura PHP de ponta, a CakePHP foi recentemente selecionada como o núcleo da V5 do Mambo Content Management System. Direcionada por uma forte comunidade e uma base de usuários de crescimento rápido, a popularidade da CakePHP está crescendo de forma contínua. Se tiver ouvido uma conversa sobre estruturas PHP, essa conversa era, provavelmente, sobre CakePHP.
Cada uma das estruturas tem seu próprio conjunto de instruções de instalação e uma discussão completa dos detalhes da instalação está fora do escopo deste artigo. Cada instalação será ressaltada, destacando-se os pontos altos que podem não ser cobertos nas instruções de instalação de cada estrutura individual ou quando um desvio dessa instruções for necessário devido aos detalhes da instalação de todas as três em uma única máquina.
Comece criando uma pasta para conter todo o código, estruturas e inclusões necessários para esta série (por exemplo, um diretório chamado /column). Nesse diretório, crie quatro diretórios adicionais: htdocs, protected, include e src. Edite seu arquivo conf do Apache de forma que a raiz do documento aponte para /column/htdocs — e, enquanto estiver lá (se ainda não tiver feito), deve ativar mod_rewrite. Edite seu arquivo conf php.ini para incluir o diretório /column/include/ na diretiva include_path. Não se preocupe se isso ainda não fizer sentido. À medida que você instala as estruturas, tudo ficará claro.
Faça download da Zend Framework (consulte Recursos). Esta série foi escrita usando a V1.0.1. Faça download e descompacte a Zend Framework no diretório /column/src. A distribuição conterá diversos arquivos de texto e três diretórios: demos, tests e library. Copie o conteúdo do diretório library (deve ser apenas uma pasta chamada Zend) no diretório /column/include/. Agora, você deve ter uma pasta chamada /column/include/Zend que contém diversos diretórios e arquivos. Essas são as bibliotecas usadas pela Zend Framework.
É isso! Você instalou a Zend Framework.
Faça download da symfony (consulte Recursos). Você está livre para instalar a symfony através de qualquer um dos métodos listados na página de download, apesar de que para nossos propósitos, recomenda-se fazer download do tarball. Descompacte o tarball no diretório /column/src/symfony/. Você deve acabar com quatro diretórios (data, doc, lib e licenses), assim como alguns documentos LEIA-ME. Nem todos eles são necessários para a instalação de um aplicativo concluído, mas por hora, eles serão adequados. Isso pode parecer muito simples para uma instalação. Lembre-se de que essas estruturas geralmente consistem em utilitários e bibliotecas, portanto, instalá-las não é difícil. Para usá-las, será necessário um pouco mais de configuração. Isso ficará claro posteriormente.
Nem todos têm a opção de usar a instalação PHP Extension and Application Repository (PEAR) em seu ambiente, por isso fazemos referência ao método de instalação acima. No entanto, se você puder usar PEAR, definitivamente, use-o. Ambos os métodos estão descritos na página de instalação da symfony (consulte Recursos).
Faça download da CakePHP (consulte Recursos). Essa série foi escrita usando a versão 1.2.0.5427alpha. A ramificação 1.2 da CakePHP, apesar de ser uma alfa madura, foi amplamente adotada pela comunidade CakePHP como norma. Faça download e descompacte o tarball, colocando o conteúdo em /column/src/cakephp. Você deve acabar com quatro diretórios (app, cake, doc e vendors), assim como dois arquivos (.htaccess e index.php). Você estará movendo alguns desses arquivos posteriormente, mas por hora isso está OK.
Você transferiu por download e instalou três estruturas. Mas perceberá que ainda não fez realmente nada com elas ainda, como verificar as instalações com um aplicativo Hello World. Isso é porque você vai passar direto pelo Hello World e seguir para algo mais substancioso (mas não muito mais).
Construir um aplicativo Hello World em uma estrutura PHP pode ser um pouco complicado. Usar uma estrutura envolve algum gasto adicional e esse gasto adicional atrapalha quando está tentando fazer algo simples, como o Hello World. Mas esse mesmo gasto adicional deve parecer como uma despesa bem feita ao lidar com aplicativos mais complicados.
O aplicativo de teste que você irá construir não é muito — ainda. Permitirá que você faça postagem de texto no aplicativo usando uma área de texto. Esse texto será salvo em um banco de dados e recuperado pelo aplicativo para exibição por solicitação. Ao usar esse tipo de aplicativo, seria possível criar e atualizar conteúdo facilmente em um Web site sem precisar editar HTML nem fazer upload de novos arquivos. Esse aplicativo altamente inovador e original será chamado Blahg.
Qual é a aparência do Blahg?
Baseado na descrição do Blahg, você provavelmente inferiu diversas coisas sobre como o aplicativo será projetado. O Blahg precisa de quatro elementos:
- Uma página que contém um formulário — Esse formulário precisará conter pelo menos uma área de texto. Essa página será a página de escrita.
- Uma página que lê uma postagem — Essa página precisará receber algum tipo de Identificador de postagem. Essa página será a página de leitura.
- Uma página que lista as postagens disponíveis — Essa página será a página de índice.
- Uma tabela de banco de dados para conter as postagens — Essa tabela precisará pelo menos conter o texto de postagem e o identificador de postagem e, provavelmente, um título de Postagem e a data da última modificação da postagem.
Obviamente, o Blahg poderia ser muito mais robusto que isso e, posteriormente na série, você realizará diversos aprimoramentos. Mas, por hora, deixe esses requisitos simples serem suficientes. Infelizmente, você não terá a chance de construir o Blahg em nenhuma das estruturas ainda. Isso ocorre na Parte 2. Mas agora é uma boa hora para configurar os bancos de dados que irá usar.
Configurando os Bancos de Dados
Antes de poder realmente construir o Blahg, é necessário configurar os bancos de dados. Não é necessário configurar um banco de dados para cada estrutura individual, mas para o propósito desta série, ajudará a manter as coisas um pouco mais organizadas enquanto evita-se a necessidade de prefixos de tabela.
Crie três bancos de dados, chamados Zend, symfony e Cake, e conceda direitos integrais a um usuário apropriado para cada banco de dados. As instruções para cada estrutura abaixo conterá o SQL necessário para criar a tabela de postagens.
Enquanto estiver manipulando os bancos de dados, pode criar também as tabelas que o Blahg usará no início. Crie uma tabela de postagens nos bancos de dados Zend e symfony usando o SQL a seguir.
Lista 1. Criando uma Tabela de Postagens em Zend e symfony
CREATE TABLE 'posts' (
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'title' VARCHAR( 255 ) NOT NULL ,
'text' TEXT NOT NULL ,
'modified' TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM ;
|
Para Zend e symfony, você está deixando a manutenção da coluna modificada para o banco de dados. Para CakePHP, você usará um SQL ligeiramente diferente. Fazer isso permitirá que Cake realize alguma mágica para você (especificamente, CakePHP fará a manutenção da coluna modificada automaticamente).
Lista 2. Criando uma Tabela de Postagens em CakePHP
CREATE TABLE 'posts' (
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'title' VARCHAR( 255 ) NOT NULL ,
'text' TEXT NOT NULL ,
'modified' DATETIME DEFAULT NULL
) ENGINE = MYISAM ;
|
Isso é o mais simples que sintaxe de tabela pode ser. Baseado na aparência dessas tabelas, você deve ter uma imagem bem clara da aparência e funcionamento de Blahg. Você pode, até mesmo, tentar construir o Blahg.
Resista à tentação de começar a manipular as estruturas imediatamente. Em vez disso, use algum tempo e construa Blahg sem usar nenhuma estrutura. Escreva da maneira em que está acostumado a escrever seus aplicativos, seja qual for essa maneira. Apenas certifique-se de seguir os requisitos listados acima ao construir Blahg — não fique muito sofisticado ainda. Ao construir o aplicativo de teste fora do contexto de uma estrutura e modificar o aplicativo para incluir aprimoramentos construídos ao longo da série, você pode obter uma boa noção de como uma determinada estrutura se adequa às suas necessidades e como uma determinada estrutura se ajusta a seu estilo de desenvolvimento.
Cobrimos uma boa parte aqui. Espero que suas instalações tenham sido suaves, mas se tiver tido algum problema, você deve pesquisar na documentação da instalação sobre cada respectiva estrutura (consulte Recursos). Use algum tempo para construir Blahg de acordo com as instruções acima. Será um tempo bem usado.
Aprender
-
Leia o resto desta série "
Estruturas PHP
".
-
Consulte o Manual da Zend Framework.
-
Obtenha a documentação da symfony.
-
Verifique o Manual da CakePHP (Nota: O manual foi escrito para a
CakePHP V1.1. Pode haver algumas variações já que você está usando a CakePHP V1.2).
-
Leia a série em cinco partes "
Cook up Web sites fast with CakePHP."
-
Visite a Wikipedia para obter uma visão de alto nível de
estruturas de software.
-
Obtenha uma visão geral da arquitetura MVC
da Wikipedia.
-
Consulte o Manual de PHP para obter informações adicionais.
-
Visite PHP.net para obter documentação adicional de PHP.
-
Para tutoriais sobre aprender a programar com PHP, verifique a série do developerWorks
"
Aprendendo 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 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 do PHP V5.2.3.
-
Faça download do symfony.
-
Faça download do CakePHP.
-
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.