PRADO: (não apenas mais um) framework para o PHP 5
Olá, pessoal! Este é o meu primeiro post aqui no devFranca. O objetivo dele é apresentar o framework PHP com o qual trabalho, e que acho bastante interessante para o desenvolvimento de aplicações web. Não deixe de comentar após a leitura. :)
Há cerca de três anos, percebi que as aplicações estavam migrando para a web, e a partir dessa constatação decidi mudar meu foco de desenvolvimento. Até então, meu trabalho consistia em desenvolver programas para desktop, e minha ferramenta favorita era o Delphi (embora eu já tivesse trabalhado também com o VB). Eu não era nenhum estrangeiro nas terras do desenvolvimento web, tendo já trabalhado por quatro anos com o ASP, e conhecia, portanto, as limitações dessa plataforma.
Como simpatizante das tecnologias opensource, escolher o PHP foi a decisão natural. Naquele momento, eu iria iniciar um projeto PHP do zero, e percebi que reinventar a roda não seria inteligente nem produtivo. Foi daí que parti em busca de um framework, uma caixa de ferramentas mais ou menos prontas, que me poupasse o esforço de codificar muita coisa “na unha”.
Após algumas perguntas ao Grande Oráculo, deparei-me com o PRADO (sigla para PHP Rapid Application Development Object-oriented). Dentre tantos frameworks para PHP, chamou minha atenção no PRADO o seu “jeitão” inspirado no Delphi, de que tomou emprestado vários conceitos, como a utilização de componentes e eventos, além de uma hierarquia de classes nitidamente inspirada na VCL.
Hoje, o PRADO já está na versão 3.1.6, e pode ser baixado gratuitamente aqui, sob a licença BSD revisada. O framework vem num arquivo compactado (padrão ZIP), bastando descompactá-lo, mantendo a estrutura de diretórios, numa pasta acessível pelo seu servidor web (Apache, IIS, etc.).
Pois bem, deixemos de blablablá e vamos colocar a mão na massa, criando nosso primeiro projeto em PRADO, que terá o nome de olamundo (sugestivo e original, não?). O PRADO trabalha com uma estrutura de pastas predefinida, dentro da qual criaremos alguns arquivos, conforme mostra a figura abaixo.
O arquivo index.php, que fica na pasta-raiz do projeto, terá o conteúdo seguinte:
require(‘../~prado-3.1.6.r2699/framework/prado.php’);
$application=new TApplication;
$application->run();
?>
E só. Não se esqueça de trocar <pasta do PRADO> pelo caminho da pasta onde você instalou o PRADO.
O arquivo /protected/pages/Home.page, apesar da extensão pouco usual, é apenas um arquivo HTML no qual inserimos, além das tags padrão, as tags especiais do PRADO. No nosso projeto, seu conteúdo será o seguinte:
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8″>
</head>
<body>
<com:TForm>
Qual é o seu nome? <com:TTextBox ID=“txtNome” />
<com:TButton ID=“btnEnviar” Text=“Enviar” OnClick=“Page.btnEnviarClick” /><br />
<com:TLabel ID=“lblCumprimento” />
</com:TForm>
</body>
</html>
Veja que eu negritei as tags especiais do PRADO. Elas representam os componentes, que por sua vez vão se transformar depois em código 100% HTML. Aqui, utilizei três componentes: TTextBox (que se tornará uma caixa de texto), TButton (um botão) e TLabel (uma área de texto estático, que será renderizada como <span>). Note que nesse arquivo não há nenhum código PHP, e essa é exatamente a intenção: separar o que é design do que é código, implementando assim o paradigma MVC (Model-view-controller).
O PRADO é totalmente orientado a objeto. Por isso, a toda página do aplicativo corresponde uma classe, derivada de TPage (como você pode ver logo mais abaixo). Cada classe de página requer dois arquivos, um .page (para a parte visual) e outro .php (para o código). Ambos os arquivos devem ter o mesmo nome, que deve coincidir também com o nome da classe. O padrão para a página inicial do PRADO é Home (há como alterar isso, criando um arquivo de configuração personalizado, assunto que ficará para uma próxima oportunidade). Tudo muito bom, mas cadê o código PHP? Está no arquivo /protected/pages/Home.php:
class Home extends TPage {
public function btnEnviarClick($sender, $param) {
$this->lblCumprimento->Text = “Olá, “ . $this->txtNome->Text . “!”;
}
}
?>
Note que, no arquivo Home.page, há um atributo OnClick na tag do TButton, referenciando um método chamado Page.btnEnviarClick. Pois bem, esse método é implementado em Home.php. Acho que todos conseguiram sacar o que o nosso “aplicativo” vai fazer: pegar o nome digitado na caixa de texto e apresentar uma saudação a ele. Quem quiser ver a coisa funcionando ao vivo e em preto-e-branco (desculpe, gente, não deu tempo de colocar CSS para deixar coloridinho :p), clique aqui.
Esse primeiro projeto implementa um formulário pelo método postback, no qual os dados são enviados ao servidor para processamento e a página é completamente recarregada para exibir o resultado. No meu próximo post, vou mostar como, com pouquíssimas alterações, é possível transformar esse aplicativo numa chamada callback, devolvendo o resultado sem recarregar a página. Em suma, veremos como o PRADO trabalha com AJAX - e isso sem mexer numa linha sequer de Javascript!
Bom gente, aqui chega ao fim minha primeira colaboração. Espero que tenham gostado. Até mais!
2 Responses to “PRADO: (não apenas mais um) framework para o PHP 5”
Leave a Reply


Ciro on outubro 5th, 2009
Muito bom o post amigo…
Gostaria de saber se teria como vc postar 1 exemplo do prado trabalhando com banco de dados…
Obrigado!
goncin on outubro 6th, 2009
Ciro,
Primeiramente, obrigado pela participação.
Espero postar em breve um tutorial de CRUD (Create, Retrieve, Update e Delete), dividido em duas partes.
Adianto desde já que o PRADO é bastante agnóstico em termos de infraestrutura de banco de dados. Tudo o que o PRADO precisa é que o processo que você use para acessar o BD retorne uma matriz. No tutorial que pretendo redigir, usarei o ADODB (http://adodb.sourceforge.net).
Até mais, e passe a nos acompanhar em http://devfranca.ning.com.