goncin@wordpress.com:~$ _

Linux, programação e toda sorte de nerdices

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.

classtree

Hoje, o PRADO já está na versão 3.1.6 3.1.7, e pode ser baixado gratuitamente aqui 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:

<?php
require('path/to/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:

<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
  <h1>Olá, mundo!</h1>
  <com:TForm>
    Qual é o seu nome? <com:TTextBox ID="txtNome" />&nbsp;
    <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:

<?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!

4 Respostas para “PRADO: (não apenas mais um) framework para o PHP 5

  1. Pingback: PRADO para PHP 5: Active Controls (AJAX) « goncin@wordpress.com:~$ _

  2. Helder 03/06/2010 às 05\0519

    Temos muito em comun.Sou fã incondicionau de PHP e Ubuntu. Ainda não encontrei o framework ideal para o PHP, assim faço algumas ciosas em funções pontuais.

    Gostei bastante de seu artigo.

    VOce ainda utilizar o PRADO ?

    • goncin 03/06/2010 às 10\1045

      Olá, Helder!

      Primeiramente, obrigado por comentar.

      Sim, ainda utilizo o PRADO (não mudei de framework ainda), mas já faz quase um ano que não desenvolvo nada de novo, estou só fazendo manutenção. Cargo de chefia, sabe como é, não sobra muito mais tempo para desenvolver. Mas posso garantir que o PRADO é uma ótima opção, principalmente para quem trabalhou com o Delphi antes de partir para a web.

  3. Pingback: Apresentando o Yii Framework para PHP « goncin@wordpress.com:~$ _

Deixe um comentário