m_pdf.jpg" width=34 border=0>

PRADO

Um framework PHP para desenvolvimento de aplicações Web

No desenvolvimento de aplicações web, geralmente nos deparamos com um cenário muitas vezes repetitivo e cansativo, onde boa parte do tempo é utilizada com tarefas que fogem do objetivo da aplicação ou regra de negócio. Alguns exemplos que podemos citar são validações de formulários, verificações de quais usuários têm acesso a uma determinada página, atualizações dos valores de um formulário quando executamos um post nele mesmo, também conhecido como postback, e muitos outros.

Temos no PHP uma das linguagens para desenvolvimento web mais utilizadas do mundo, que tem como principais características facilidade de utilização e uma alta performance, e que recentemente passou a receber investimentos da IBM, reconhecendo assim o seu grande potencial. No entanto, essa linguagem vinha deixando a desejar com relação ao seu modo de programar, onde linguagens como Java e ASP, evoluíram com frameworks poderosos como o Struts e o ASP.NET, respectivamente, que tornam o processo de desenvolvimento para web mais produtivo, menos oneroso com relação a manutenções e baseando-se em design patterns.

Neste artigo apresentaremos o framework PRADO. Este permite o desenvolvimento de aplicações PHP de forma produtiva e eficiente.

Um pouco de história

Nos primórdios da programação web tínhamos os famosos cgi’s escritos em linguagens como C e Perl. Naquela época, toda página dinâmica teria que ser criada usando tags html embutidas dentro do código cgi. Isso trazia uma enorme dor de cabeça tanto para dar manutenção no código, como também para alterar o layout das páginas, tarefa quase que impossível para os designers da época (um exemplo da dificuldade que era realizar essa tarefa pode ser observado na Listagem 1).

 Listagem 1. Script em perl que exibe um valor enviado por uma página utilizando o método GET.

print “Content-type: text/html\n\n”;

print “<html>\n”;

print “<head>\n”;

print “</head>\n”;

print “<body>\n”;

print “<center>\n”;

$p = $ENV{‘QUERY_STRING’};

($key,$value) = split(/=/,$p,2);

print “<h1>”,$value,”</h1>\n”;

print “</center>\n”;

print “</body>\n”;

print “</html>\n”;

 

Depois apareceram linguagens como asp e php, onde o código com a lógica dinâmica poderia ser embutido em páginas html. Dessa forma, criava-se um cenário inverso ao anterior, e que permitia uma maior facilidade para que os designers pudessem mexer mais facilmente no layout sem precisar conhecer detalhes da linguagem de programação utilizada (como pode ser observado na Listagem 2).

 Listagem 2. Script em php que exibe um valor enviado por uma página utilizando o método GET.

<html>

<head>

</head>

<body>

<center>

<h1><? echo $parametro ?></h1>

</center>

</body>

</html>

Mesmo assim, programar para web ainda era um pouco árduo, principalmente quando se tratava da interatividade com o usuário e validação de formulários, onde muitas vezes era necessário manipular códigos javascripts e campos hiddens para gerar o resultado pretendido. Isso sem considerar o fato do protocolo HTTP ser stateless, onde não existe persistência de conexão, então sempre que for necessário manter os valores dos campos de um formulário entre requisições é preciso manipular campos hiddens ou variáveis de sessão.

A evolução

O PHP por possuir vários recursos com uma lista enorme de funções, com acesso aos mais diversos tipos de banco de dados e com uma sintaxe simples e de fácil aprendizagem, se tornou rapidamente uma das linguagens mais utilizadas para desenvolvimento de aplicações web, mas que sofre dos mesmos problemas apresentados anteriormente.

Muitas empresas criaram o seu próprio framework, que muitas vezes eram um conjunto de classes que agilizavam o desenvolvimento de aplicações, e que continham as funções mais usuais, realizando assim o conceito de reusabilidade.

A utilização de frameworks “públicos” traz consigo a preocupação em ser o mais completo possível para ser utilizado nos mais diversos tipos de aplicações, ter uma boa documentação para que qualquer um possa utilizá-lo, seguir padrões de projeto, além de ter uma comunidade de desenvolvedores espalhados pelo mundo, utilizando e trocando experiências. Muitos deles procuram separar fisicamente, em arquivos, o conteúdo HTML do código de programação, para que o designer possa lidar o máximo possível apenas com o HTML, e o desenvolvedor lidar o máximo possível apenas com a lógica de programação.

Tecnologias como Java e .NET implementaram conhecidos frameworks. Em Java podemos citar o Struts, WebWork, e Java Server Faces, e em .NET o ASP.NET que faz parte do .NET Framework.

Chamo a atenção aqui para o Java Server Faces da Sun e o ASP.NET da Microsoft. Estes utilizam o conceito de componentes e eventos, conceitos estes muitos conhecidos por quem desenvolve aplicações desktop, e que sabem o quanto é produtivo utilizar componentes e eventos para o desenvolvimento de aplicações, sem falar no fato de que o desenvolvedor pode criar seus próprios componentes e utilizá-lo facilmente em vários programas. Como veremos a seguir, o PRADO (um framework para o PHP) também se enquadra neste conceito.

PRADO

PRADO é um PHP 5 Framework baseado em componentes e eventos que torna o modelo de programação web em PHP muito semelhante ao ASP.NET da Microsoft.

Criado por Qiang Xue, o PRADO foi inicialmente inspirado no projeto Apache Tapestry. Durante seu projeto e implementação, o Borland Delphi e o ASP.NET tiveram um papel importante na definição do Framework.

Vejamos algumas características do PRADO:

·         HTML separado do código php;

·         Utilização do conceito de componentes, fornecendo um alto nível de reutilização;

·         Contém vários componentes para validação de formulários;

·         Utiliza o ADOdb como camada de abstração de banco de dados. As funções nativas do php também podem ser utilizadas;

·         Suporte a Master Pages, que consiste na funcionalidade de herança visual, onde podemos criar uma página padrão, geralmente com cabeçalho, rodapé e menu, que será utilizada em todo o site, sendo mesclada às páginas que a herdarão;

·         Suporte a temas e skins, que consistem em templates que permitem modificar o layout da aplicação dinamicamente;

·         Suporte a módulos, que consistem em agrupar uma coleção de páginas que possuem objetivos em comuns. Exemplo: o módulo fornecedor seriam todas as páginas que cadastram e alteram informações dos fornecedores em uma aplicação;

·         Arquivo xml que define a configuração da aplicação, módulos e componentes;

·         Suporte a internacionalização e localização;

...

Quer ler esse conteúdo completo? Tenha acesso completo