PRADO - Framework para PHP5
por Eric de Oliveira Cavalcanti

O PRADO é um PHP 5 Framework baseado em componentes e eventos, que torna o modelo de programação WEB muito similar ao ASP.NET. Estarei dando uma introdução à esse framework nesse artigo.



O PRADO é um PHP 5 Framework baseado em componentes e eventos, que torna o modelo de programação WEB muito similar ao ASP.NET.

Criado por Qiang Xue, o PRADO foi inicialmente inspirado no projeto Apache Tapestry. Durante o designer e implementação, o Borland Delphi e o ASP.NET tiveram um papel importante na definição do Framework. Aqueles que já conhecem essas tecnologias vão se sentir mais confortáveis no seu entendimento.

Este artigo é baseado no "A quickstart tutorial for PRADO" que vem junto com o framework.

O PRADO necessita do PHP 5 com a extensão SimpleXML. Você pode baixá-lo em http://www.xisc.com/.

Depois de descompactado será criado um diretório de nome "prado" com o seguinte conteúdo:

- README.html: o arquivo README do projeto
- index.html: um arquivo com o mesmo conteúdo do README.html
- COPYRIGHT: informações de copyright
- HISTORY: informações de atualização das versões
- framework/: o core code do PRADO framework
- examples/: alguns exemplos
- docs/: a documentação do PRADO

Agora copie todo o conteúdo do diretório prado para diretório root do servidor web.


Ao escrever este artigo a última distribuição era a 1.7 que inclui as seguintes classes de componentes. Suas propriedades, eventos e métodos estão documentados no manual da API.


TComponent
    TAdodb
    TModule
    TControl
        TExpression
        TForm
        TLiteral
        TPage
        TPlaceHolder
        TRepeater
        TRepeaterItem
        TStatements
        TWebControl
            TButton
            TCheckBox
                TRadioButton
            TFileUpload
            TFormLabel
            THyperLink
            TImage
                TImageButton
            TLabel
            TLinkButton
            TListBox
            TListControl
                TCheckBoxList
                TDropDownList
                    TListBox
            TPanel
            TTextBox
                TDatePicker
                THtmlArea
            TValidationSummary
            TValidator
                TCompareValidator
                TCustomValidator
                TRangeValidator
                TRegularExpressionValidator
                    TEmailAddressValidator
                TRequiredFieldValidator


Percebam a semelhança com o Borland Delphi na nomeclatura das classes e com o ASP.NET nas classes existentes.

Como não poderia ser diferente, vamos criar nosso Olá Mundo utilizando este interessante framework.

Nós iremos precisar dos seguintes arquivos para esta tarefa:


<table width="508" border="1">
  <tr>
    <td width="184">olamundo.php</td>
    <td width="308">a entrada principal para a aplica&ccedil;&atilde;o</td>
  </tr>
  <tr>
    <td>olamundo/application.spec</td>
    <td>o arquivo de especifica&ccedil;&atilde;o da aplica&ccedil;&atilde;o</td>
  </tr>
  <tr>
    <td>olamundo/HomePage.php</td>
    <td>o arquivo de classe da p&aacute;gina</td>
  </tr>
  <tr>
    <td>olamundo/HomePage.tpl</td>
    <td>o arquivo de template da p&aacute;gina</td>
  </tr>
</table>


Note, que o diretório olamundo pode ser protegido para acesso por usuários finais porque ele contém informações sensíveis da aplicação.

No arquivo olamundo.php, nós iremos iniciar uma aplicação, como mostrado abaixo:


<?php
require_once('framework/prado.php');
pradoGetApplication('olamundo/application.spec')->run();
?>


Toda aplicação PRADO dever ter um arquivo de entrada que especifica a localização do arquivo de especificação da aplicação.

O application.spec é um arquivo XML que configura parâmetros à nível de aplicação, muito parecido com o web.config do ASP.NET. Para este exemplo, seu conteúdo será:


 <?xml version="1.0" encoding="UTF-8"?>
 <application ID="olamundo">
    <request default="HomePage" />
    <alias name="Pages" path="." />
    <using namespace="System.Web.UI.WebControls" />
    <using namespace="Pages" />
 </application>


A diretiva define path aliases. O alias System é definido internamente referenciando o diretório que contém com o core code do framework. Você pode usar aliases para contruir namespaces. A diretiva especifica o namespace usando na inicialização da aplicação (Você pode usar um namespace no código chamando a funcão using() ).

O elemento request especifica a configuração para interpretar os dados solicitados pelo usuário. O atributo default especifica a página que será exibida se nenhuma página for explicitamente solicitada pelo usuário.

O arquivo HomePage.tpl é uma template de página para a HomePage. Ele contém as seguintes linhas:


 <html>
 <head>
 <title>Olá Mundo!</title>
 </head>
 <body>
   <com:TForm ID="formulario">
    Digite seu nome:
     <com:TTextBox ID="txtNome" />
     <com:TButton Text="Clique me" OnClick="clickMe" ID="btnOlamundo" />     <com:TLabel ID="lblOlamundo" /> </com:TForm>
 </body>
 </html>


Para quem conhece ASP.NET este arquivo é muito familiar e fácil de entender. Observe as tags , estas tags contém componentes do PRADO que serão renderizados como mostrado abaixo:


<com:TForm ID="formulario"> <form name="formulario" method="post" enctype="multipart/form-data" id="formulario"> 
<com:TTextBox ID="txtNome" /> <input id="txtNome" name="txtNome" type="text" value=""/> 
<com:TLabel ID="lblOlamundo" /> <span id="lblOlamundo"/> 
<com:TButton Text="Clique me" OnClick="clickMe" /> <input id="btnOlamundo" type="submit" name="btnOlamundo" value="Clique me"/> 


Nós anexamos o método da página de nome clickMe para o evento OnClick do botão. Então quando o botão for clicado pelo usuário, o método clickMe será invocado automaticamente.

O arquivo HomePage.php contém o código que define a página HomePage, como mostrado abaixo,


<?php
class HomePage extends TPage
{
    function 
clickMe($sender,$param)
    {
        
$this->lblOlamundo->setText("Olá Mundo, ".$this->txtNome->Text."!");
    }
}
?>


O PRADO ainda possui vários recursos como viewstate, sessions, caching, validação de formulários, autenticação e autorização. Além de tornar possível a criação de componentes de forma simples e prática. Mas tudo isso são assuntos para novos artigos.

Espero que tenham gostado!