Você está na página 1de 50

PRADO, UM

FRAMEWORK PARA
O PHP 5
Características e Implementação de aplicações WEB
com a plataforma de desenvolvimento PRADO

Autor: Luiz Fernando Martins de Carvalho


Orientador: Adelson De Paula
Informática Industrial – CEFET/MG
Relatório Técnico
29/08/2008 (2ª edição - 3ª revisão )
PRADO, UM FRAMEWORK para o PHP 5
SUMÁRIO
1-Introdução.................................................................................................................... 5
2-Frameworks ................................................................................................................. 6
3-Outros Frameworks ..................................................................................................... 7
4-Termos Técnicos ......................................................................................................... 8
4.1-MVC (Model View Controller): ............................................................................................. 8
4.2-ORM(Object-relational mapping): ........................................................................................ 8
4.3-ActiveRecords: .................................................................................................................. 10
4.4-ActiveControls (AJAX): ...................................................................................................... 10
4.5- Internacionalização e Localização (I18N-L10N): ............................................................. 10
4.6- PHP: ................................................................................................................................. 11
4.7- POO (Programação Orientada a Objetos): ...................................................................... 11
4.8- Postback ........................................................................................................................... 11
4.9- CAPTCHA ........................................................................................................................ 12
4.10- Spams / Spammers ........................................................................................................ 12
5-O Framework PRADO ............................................................................................... 13
5.1 – Características ................................................................................................................ 13
5.2 – Configuração .................................................................................................................. 13
5.3 – Pré-Requisitos ................................................................................................................ 15
5.4 – Componentes ................................................................................................................. 15
5.4.1-Controles Padrões........................................................................................ 15
5.4.2-Controles de Validação ................................................................................ 17
5.4.3-Controles de Listagem ................................................................................. 17
5.4.4-Controles de Dados...................................................................................... 18
5.4.5-Controles Dinâmicos, ActiveControls (AJAX) ............................................... 18
5.5 – MVC ................................................................................................................................ 19
6-Aplicação Protótipo.................................................................................................... 22
6.1 – Introdução ....................................................................................................................... 22
6.2 – Especificações.......................................................................................................... 22
6.3 – Implementação ............................................................................................................... 24
6.3 – Resultados................................................................................................................ 40
7-Conhecendo mais o PRADO ..................................................................................... 46
7.1- API do PRADO: ................................................................................................................ 46
7.2 - PRADO QuickStart Tutorial: ............................................................................................ 46
7.3 – PRADO Blog Tutorial: .................................................................................................... 46
7.4 – SQL Map Tutorial:........................................................................................................... 46
7.5 – Video do HelloWorld Tutorial: ......................................................................................... 46
7.6 – PRADO Wiki: .................................................................................................................. 46

1
PRADO, UM FRAMEWORK para o PHP 5
7.8 – Forum para tirar dúvidas :............................................................................................... 46
7.9- Aplicativos de demonstração: .......................................................................................... 46
7.10 – Sobre o PRADO: .......................................................................................................... 46
8- Conclusões ............................................................................................................... 47
9- Bibliografia ................................................................................................................ 48

2
PRADO, UM FRAMEWORK para o PHP 5
A GRADECIMENTOS E D EDICATÓRIAS

Agradeço a todos os professores do Curso Técnico do CEFET-MG,


especialmente os professores Adelson, Fabrício Vivas, José Geraldo e Gilmar que
foram de grande importância na minha formação profissional.

Dedico este trabalho a todos os professores do CEFET-MG, à minha família e


amigos.

3
PRADO, UM FRAMEWORK para o PHP 5
RESUMO

Este documento tem o propósito de apresentar a plataforma de


desenvolvimento PRADO que auxilia o desenvolvimento de aplicativos escritos na
linguagem PHP oferecendo uma maior organização dos projetos, rapidez na produção
e reutilização de código. Utilizando componentes e orientado à eventos, graças à
orientação a objetos fornecida pelo PHP 5, o PRADO lembra um pouco algumas IDEs
como o Delphi, NetBeans que também utilizam componentes e eventos. Além de ter
esse diferencial, o framework utiliza a abordagem MVC, e possui diversos
funcionalidades como ActiveRecords, ActiveControls(AJAX), Acesso a múltiplos
SGBDs, Internacionalização(I18N-L10N), Temas e Templates, e muitas outras
abordadas adiante.
Antes de detalhar a ferramenta, é apresentada uma análise geral de outros
frameworks voltados ao PHP e outras linguagens. Também é abordado o significado
de alguns termos utilizados no desenvolvimento web com o uso dessas ferramentas e
o que é preciso saber para utilizá-las.

Palavras-Chave:
PRADO – PHP 5 – Framework – Componentes – Eventos – MVC – WEB

4
PRADO, UM FRAMEWORK para o PHP 5
1-INTRODUÇÃO
O PRADO é framework de desenvolvimento de aplicações web em PHP 5 que utiliza
componente e eventos em sua implementação e usa o padrão MVC que separa a parte lógica
da apresentação. PRADO é uma sigla inglesa que significa “Desenvolvimento rápido de
aplicações orientadas a abjeto em PHP” (em inglês, “PHP Rapid Application Development
Object-oriented”).

Uma de suas importantes características é a reutilização de código, ou seja, o


desenvolvedor utiliza não só o seu próprio código, mas também aproveita outros códigos
escritos por membros de sua equipe ou mesmo disponíveis na Internet de forma rápida e fácil.

De acordo com o site responsável pela ferramenta (http://www.pradosoft.com), o


framework é recomendado para o desenvolvimento de aplicações que requerem uma grande
interatividade com o usuário. Podendo ser usado para o desenvolvimento de simples sistemas
de blog, complexos sistemas de gerenciamento de conteúdo (CMS - Content Management
System) ou mesmo uma completa solução de E-Commerce.

5
PRADO, UM FRAMEWORK para o PHP 5
2-FRAMEWORKS
Segundo a enciclopédia Wikipédia: “Frameworks são projetados com a intenção de
facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem
mais tempo determinando as exigências do software do que com detalhes de baixo nível do
sistema.”, ou seja, com o uso dessas ferramentas os desenvolvedores se preocupam mais com
a lógica de negócio específica da aplicação e com sua aparência visual, poupando o gasto de
tempo com operações e implementações comuns (complexas ou simples) e constantes.

O início do uso dos frameworks não é bem definido, mas é aceitável dizer que são uma
nova abordagem dos Padrões de Projeto e veio complementá-los. O estudante de ciência da
computação Kent Beck teve seu primeiro contato com os padrões de projeto da arquitetura e
urbanismo quando morou com estudantes de arquitetura na Universidade de Oregon. Em
1987, Kent Beck se uniu a Ward Cunningham e assim começaram a experimentar os padrões
de projeto no desenvolvimento de software, mostrando seus resultados na conferencia
OOPSLA (conferencia de desenvolvimento de sistemas orientados a objeto) daquele ano. Mas
só ganhou popularidade após a publicação do livro Padrões de Projetos: Elementos de
Software Reutilizado Orientado a Objetos pela "Gangue dos Quatro" (Erich Gamma, Richard
Helm, Ralph Johnson, e John Vlissides) em 1995 onde foram catalogados 23 soluções
específicas para problemas comuns de design (Apresentação “Reuso: Padrões de Projeto e
Frameworks”, UFSC).

Diante de um mercado exigente, onde o tempo de produção tornou-se um fator


determinante, os frameworks foram ganhando espaço, sendo cada vez mais comuns nas
empresas desenvolvedoras de softwares, desenvolvedores de sistemas Web e agências de
publicidade para a Web.

6
PRADO, UM FRAMEWORK para o PHP 5
3-OUTROS FRAMEWORKS
Além do PRADO, existem outros frameworks que atual também no PHP ou mesmo em
outras linguagens como JAVA, ASP, JSP, Ruby, Javascript, Phyton, ActionScript, etc. Alguns
Frameworks são completos, já outros são específicos a uma tarefa ou um conjunto delas. A
grande maioria é grátis e open-source, isto é, possui o código aberto e é suportado por uma
comunidade de usuários, resultando em constantes atualizações, suporte e novas
implementações.

Dentre as outras plataformas de desenvolvimento em PHP podemos citar Symphony,


Code Igniter, Zend Framework, CakePHP, PHP On TRAX, Propel e Lumine (Apenas
Persistência, ORM) que são em certos aspectos diferentes do PRADO, mas compartilham do
mesmo propósito de ser de um framework.

No desenvolvimento JAVA e JSP têm os frameworks JSF (Java Server Faces), Struts,
Hibernate (Apenas Persistência, ORM), Grails. Na linguagem ASP temos o ASP .NET MVC. Na
linguagem Ruby temos o Ruby on Rails, Merb, Camping, Vintage. No JavaScript temos o
Prototype, JQuery, mooTools. No Phyton o Django. No ActionScript o pureMVC.

A escolha do melhor framework muitas vezes é difícil e pessoal, assim como a escolha
de uma linguagem de desenvolvimento, um sistema operacional, ou um SGBD (Sistema de
Gerenciamento de Banco de Dados). Mas todos cumprem sua função devendo o
desenvolvedor saber escolher o melhor para sua necessidade e que proporcionará a solução
mais simples e eficiente.

7
PRADO, UM FRAMEWORK para o PHP 5
4-TERMOS TÉCNICOS
Diversas siglas e termos técnicos rodeiam o trabalho com aplicações para a WEB, será
destacado, de forma simplificada, palavras que possuem envolvimento direto ou indireto com o
framework PRADO. O conhecimento básico de alguns termos e tecnologias, como HTML, XML,
CSS, PHP, SQL, POO, JavaScript, Sistemas Operacionais é esperado do leitor.

4.1-MVC (Model View Controller):

É um padrão de arquitetura de software onde a aplicação é separada em três camadas


permitindo que pessoas e equipes trabalhem nessas diferentes camadas, sem impacto no
trabalho dos outros, favorecendo a produção.

Model (Modelo): Modelo dos dados (ex.: Banco de Dados) onde toda regra de negócio
fique nesta camada. Por exemplo, numa loja, ao gravar um novo pedido, o modelo faz todo o
cálculo de frete, checagem de estoque, processamento de pagamento etc.

View (Vista): Como os dados serão vistos e como alguém pode interagir com esses
dados, normalmente páginas HTML com forms.

Controller (Controlador): É a parte que interpreta eventos que acontecem na View e


manipula os dados que estão na Model, normalmente são ações como listar, procurar, alterar,
inserir e apagar dados, conhecidas como CRUD (Create, Read, Update, Delete). (Blog
Tecnologia – Locaweb)

4.2-ORM(Object-relational mapping):

O Mapeamento Objeto-Relacional (ou ORM) é uma técnica de desenvolvimento


utilizada para reduzir a impedância da programação orientada a objetos utilizando bancos de
dados relacionais. As tabelas do banco de dados são representadas através de classes e os
registros de cada tabela são representados como instâncias das classes correspondentes.

Com esta técnica, o programador não precisa de se preocupar com os comandos em


linguagem SQL; irá usar uma interface de programação simples que faz todo o trabalho de
persistência.

Não é necessária uma correspondência direta entre as tabelas de dados e as classes


do programa. A relação entre as tabelas onde originam os dados e o objeto que os disponibiliza
é configurada pelo programador, isolando o código do programa das alterações à organização
dos dados nas tabelas do banco de dados.
(Wikipedia)

8
PRADO, UM FRAMEWORK para o PHP 5

9
PRADO, UM FRAMEWORK para o PHP 5
4.3-ActiveRecords:

ActiveRecords é uma evolução do ORM, além de realizar o mapeamento das tabelas


relacionais transformando-as em classes de objetos, e fazer o serviço de manipulação de
objetos/dados o ActiveRecords integra toda técnica com o seu framework podendo adicionar
novas funcionalidades ao sistema.

No framework PRADO, o ORM está incorporado na forma de ActiveRecords.

4.4-ActiveControls (AJAX):

AJAX (acrônimo em língua inglesa de Asynchronous Javascript And XML) é o uso


sistemático de tecnologias providas por navegadores, como Javascript e XML, para tornar
páginas mais interativas com o usuário, utilizando-se de solicitações assíncronas de
informações. AJAX não é somente um novo modelo, é também uma iniciativa na construção de
aplicações web mais dinâmicas e criativas. AJAX não é uma tecnologia, são realmente várias
tecnologias conhecidas trabalhando juntas, cada uma fazendo sua parte, oferecendo novas
funcionalidades. (Wikipedia)

No framework PRADO o AJAX é incorporado na forma de ActiveControls e seu uso a


partir de componentes é bem fácil e intuitivo.

4.5- Internacionalização e Localização (I18N-L10N):

Internacionalização e localização, em informática, são processos de desenvolvimento


e/ou adaptação de um produto, em geral softwares de computadores, para uma língua e
cultura de um país. A internacionalização de um produto não fabrica o produto novamente,
somente adapta as mensagens do sistema à língua e à cultura locais. Isto é importante porque
permite que o desenvolvedor de software respeite as particularidades de cada língua e cultura
de cada país.

Internacionalização também é escrita acronimamente como i18n, vindo da palavra


inglesa internacionalization, onde se tomam a primeira e a última letra e o número de letras que
contém a palavra; o mesmo é feito com localization escrito como L10n.

(Wikipedia)

10
PRADO, UM FRAMEWORK para o PHP 5
4.6- PHP:

PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor") é uma linguagem de
programação de computadores interpretada, livre e muito utilizada para gerar conteúdo
dinâmico na World Wide Web. O PHP é uma poderosa linguagem orientada a objetos.

(Wikipedia)

4.7- POO (Programação Orientada a Objetos):

A orientação a objetos, também conhecida como Programação Orientada a Objetos


(POO) ou ainda em inglês Object-Oriented Programming (OOP) é um paradigma de análise,
projeto e programação de sistemas de software baseado na composição e interação entre
diversas unidades de software chamadas de objetos. Em alguns contextos, prefere-se usar
modelagem orientada ao objeto, em vez de programação.

A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de
objetos para descrever um sistema de software. O funcionamento deste sistema se dá através
do relacionamento e troca de mensagens entre estes objetos.

Na programação orientada a objetos, implementa-se um conjunto de classes que


definem os objetos presentes no sistema de software. Cada classe determina o comportamento
(definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o
relacionamento com outros objetos.

(Wikipedia)

4.8- Postback

Um Postback é uma ação realizada por uma página web interativa, quando a página
inteira e seu conteúdo são enviados de volta para o servidor para serem processados.
Geralmente é utilizado na verificação de senhas para efetuar o login, processos on-line como
um formulário de pedido, ou outras funções que a máquina cliente não pode fazer sozinha por
questões de segurança, desempenho ou mesmo capacidade de processar tais informações.

(Wikipedia)

11
PRADO, UM FRAMEWORK para o PHP 5
4.9- CAPTCHA

CAPTCHA é um acrônimo da expressão "Completely Automated Public Turing test to


tell Computers and Humans Apart" (teste de Turing público completamente automatizado para
diferenciar entre computadores e humanos): um teste de desafio cognitivo, utilizado como
ferramenta anti-spam, desenvolvido pioneiramente na universidade de Carnegie-Mellon.

CAPTCHAs são utilizados para impedir que softwares automatizados executem ações
que degradam a qualidade do serviço de um sistema dado, devido à despesa do abuso ou do
recurso. Embora CAPTCHAs sejam utilizados mais freqüentemente como uma resposta a
proteção de interesses comerciais, a noção que existem para parar somente spammers é um
erro, pois são também mecanismos sugeridos para impedir listas automatizadas em placares e
em votações de discussão pública.

(Wikipedia)

4.10- Spams / Spammers

O termo Spam, abreviação em inglês de “spiced ham” (presunto condimentado), é uma


mensagem eletrônica não-solicitada enviada em massa. Na sua forma mais popular, um spam
consiste numa mensagem de correio eletrônico com fins publicitários. O termo spam, no
entanto, pode ser aplicado a mensagens enviadas ou ações maliciosas realizadas em outros
meios e noutras situações. Geralmente os spams têm caráter apelativo e na grande maioria
das vezes são incômodos e inconvenientes. Aqueles que praticam o Spam são denominados
Spammers.

(Wikipedia)

12
PRADO, UM FRAMEWORK para o PHP 5
5-O FRAMEWORK PRADO

5.1 – Características

o Orientação a objetos e alta reutilização de código;


o Programação orientada a eventos;
o Apresentação separada da lógica;
o Arquitetura modular configurável e adaptável;
o Suporte completo a diversos Bancos de Dados;
o Extensos Componentes: Controles de entrada HTML, validação, datagrid, wizard...
o Componentes dinâmicos integrados ao AJAX;
o Suporte nativo a internacionalização (I18N) e localização (L10N);
o Erros e Exceções customizáveis;
o Diversas formas de log e debug;
o Módulos caching genéricos e seletivos de saída;
o Extensa plataforma de Autenticação e Autorização;
o Módulos de Segurança: Prevenção de cross-site script (XSS), Proteção de cookies...
o Utilização das normas XHTML na sua implementação;
o Extensa documentação e suporte nos fóruns de discussão;

5.2 – Configuração

A instalação do framework prado envolve basicamente o download e a extração de


arquivos para um diretório do Servidor Web (Ex: C:/Apache/wwwroot). No site
www.pradosoft.com o usuário pode baixar um versão estável ou uma versão alpha (em testes).

Para constatar que a instalação foi concluída ao acessar a url http://endereço-do-


servidor/prado/ uma mensagem de confirmação em inglês de que tudo ocorreu bem deve ser
apresentada na tela do browser. O usuário pode inclusive acessa http://endereço-do-
servidor/prado/demos/ para ver as aplicações de demonstração, construídas utilizando o
PRADO.

Caso ocorra algum erro, o usuário deve acessar a página de requerimentos


http://endereço-do-servidor/prado/requeriments/index.php, com este procedimento as
configurações do servidor são checadas para saber quais condições são requeridas para rodar
o PRADO corretamente.

13
PRADO, UM FRAMEWORK para o PHP 5

14
PRADO, UM FRAMEWORK para o PHP 5
5.3 – Pré-Requisitos

O requisito mínimo exigido pelo framework PRADO é que o servidor Web tenha suporte
ao PHP 5. PRADO foi testado com o servidor Apache Web Server no Windows e no Linux, mas
também roda em outros servidores com suporte a PHP 5 e em outras plataformas.

Para o desenvolvimento em testes e aprendizagem o usuário pode fazer o uso de


aplicações que integram o servidor Apache, a base de dados MySQL e PHP 5 rodando na
máquina local como o VertrigoServ (http://vertrigo.sourceforge.net/), EasyPHP, XAMP, ou
LAMPs (para Linux);

5.4 – Componentes

Os componentes do framework PRADO são inúmeros e de grande variedade, incluindo


componentes dinâmicos que permitem uma melhor experiência com o usuário final. Serão
citados os componentes e suas respectivas funções sem abranger com profundidade suas
propriedades e eventos, para uma análise completa dos mesmos recomenda-se a leitura e
consulta da API do PRADO encontrada em http://www.pradosoft.com/docs/manual/.

5.4.1-Controles Padrões

TButton Representa um botão de clique de um site. Normalmente utilizado para acionar


eventos do tipo postback.

TCaptcha Mostra um CAPTCHA para utilizado para impedir que robôs spammers criem contas
nos sites .

TCheckBox Representa uma caixa de marcação de um site ( checkbox ). É utilizado para


identificar uma escolha dentre duas opções realizada pelo usuário.

TClientScript Adiciona códigos JavaScript na página.

TClientScriptLoader Carrega scripts externos e bibliotecas JavaScript.

TColorPicker Representa uma caixa de diálogos com várias opções de cores a serem
selecionadas pelo usuário.

TConditional Representa um conteúdo na página dependendo da expressão em php que


pode ser verdadeira ou falsa.

TDatePicker Representa uma caixa de diálogos com um mini-calendário. Utilizada para que o
usuário escolha uma data.

15
PRADO, UM FRAMEWORK para o PHP 5
TExpression Avalia uma expressão PHP e se preciso exibe o resultado na página.

TFileUpload Representa uma caixa de diálogo para envio de arquivos. Permite que os
usuários enviem arquivos para o servidor.

THead Representa o elemento <head> de uma página em HTML. É necessário nas páginas do
PRADO caso seja utilizado temas.

THiddenField Representa um campo oculta de uma página web.

THtmlArea Representa um WYSIWYG (Editor de textos) que permite que o usuário insira
textos formatados em HTML com grande facilidade.

THyperLink Representa um hyperlink de um site.

TImage Representa uma imagem de um site.

TImageButton Representa um botão de clique com uma imagem em seu fundo.

TImageMap Representa uma imagem com determinadas regiões clicáveis.

TInlineFrame Representa o elemento <iframe> de uma página HTML.

TJavascriptLogger Representa um logger para coleta de informações dos scripts JavaScript.

TKeyboard Representa um teclado virtual para inserção de textos e caracteres.

TLabel Representa um label que pode ser customizado por vários atributos CSS.

TLinkButton Representa um hyperlink que poder realizar eventos de postback.

TLiteral Representa um texto estático sem qualquer tag HTML.

TMultiView Representa um recipiente de controles TView, sendo cada um desses um outro


recipiente para outros controles. Apenas um TView é visível por vez.

TOutputCache Ativa o cache de determinadas partes da página e pode diminuir


consideravelmente o tempo de resposta.

TPager Gera um “paginador” que permite ao usuário escolher qual a página deseja exibir. É
relacionado a um Controle de Dados.

TPanel Representa um recipiente para outros controles. Corresponde às <div> do HTML.

TPlaceHolder Reserva um espaço a um controle de template.

TRadioButton Representa um botão do tipo seleção ( Radiobutton ). É utilizado para identificar


uma escolha dentre várias opções.

TSafeHtml Exibe um certo conteúdo HTML garantindo que não tenham códigos nocivos (como
os XSS).

TSlider Representa um controle deslizante (Slider).

TStatements Aceita expressões em PHP e exibe sua saída padrão.

TTable Representa uma tabela em HTML. É utilizado em conjunto com os controles


TTableRow e TTableCell.

16
PRADO, UM FRAMEWORK para o PHP 5
TTabPanel Representa um recipiente de vários TPanel incluindo abas para facilitar a
navegação entre eles. Apenas o conteúdo de uma aba é exibido por vez.

TTextBox Representa um campo de inserção de texto. Coleta textos de simples e múltiplas


linhas ou senhas digitadas pelos usuários.

TTextHighlighter Colore o conteúdo de um texto de acordo com a linguagem escolhida (syntax


highlighter), como PHP, XML, PRADO, etc. É utilizado para exibir um certo código na página e
colorir seu conteúdo para fácil entendimento e visualização.

TWizard Representa um conjunto de formulários com várias etapas para pegar as entradas
dos usuários. Lembra as janelas de instalação de softwares.

5.4.2-Controles de Validação

TRequiredFieldValidator Garante que um determinado campo seja preenchido pelo usuário.

TRegularExpressionValidator Verifica se o valor digitado corresponde a um padrão pré-


definido (Ex: CEP, RG, etc. ).

TEmailAddressValidator Verifica se o valor digitado corresponde a um email válido.

TCompareValidator Compara se o valor digitado pelo usuário é igual a algum outro valor ou
expressão pré-definida.

TDataTypeValidator Verifica se o valor digitado corresponde a uma data.

TRangeValidator Verifica se o valor digitado está dentro de um intervalo determinado.

TCustomValidator Permite uma validação personalizada, podendo ser realizada tanto na


própria máquina local quanto no servidor.

5.4.3-Controles de Listagem

TListBox Representa uma lista com itens unicamente ou multiplamente selecionáveis.

TDropDownList Exibe uma lista suspensa com vários itens a serem selecionados pelo
usuário.

TCheckBoxList Exibe uma lista de TCheckbox.

TRadioButtonList Exibe uma lista de TRadioButton.

TBulletedList Exibe itens no formato de marcador (de tópicos).

17
PRADO, UM FRAMEWORK para o PHP 5
5.4.4-Controles de Dados

TDataList É utilizado para exibir ou modificar uma lista de dados.

TDataGrid Exibe um formato tabular de dados com linhas e colunas.

TRepeater Exibe uma lista de conteúdos definidos em um template.

5.4.5-Controles Dinâmicos, ActiveControls (AJAX)


A) ActiveControls Padrões:

TActiveButton, TActiveCheckBox, TActiveCustomValidator, TActiveHyperLink,


TActiveImage, TActiveImageButton, TActiveLabel, TActiveLinkButton, TActivePanel,
TActivePager, TActiveRadioButton, TActiveTextBox

TCallbackOptions Manipula eventos no cliente em tempo de execução como o OnLoading.


(Callback: ação que chama um determinado evento)

*Os eventos sem a descrição são bastante semelhante aos eventos não-dinâmicos, porém implementam
funcionalidades com o uso do Ajax. Maiores informações consulte a API do PRADO.

B) ActiveList de Listagem

TActiveCheckBoxList, TActiveDropDownList, TActiveListBox, TActiveRadioButtonList.

C) Outros ActiveControls

TAutoComplete Extende TActiveTextBox oferecendo o conhecido recurso de auto-


complementação do texto.

TCallback Controle generic para manipulação de eventos do tipo callback.

TEventTriggeredCallback Ativa um callback baseado nos eventos HTML DOM.

TInPlaceTextBox Representa um TLabel que pode ser editado ao ser clicado.

TTimeTriggeredCallback Ativa um callback em um tempo determinado.

TValueTriggeredCallback Monitora um atributo de um elemento HTML e ativa um callback


quando este valor se altera.

18
PRADO, UM FRAMEWORK para o PHP 5
5.5 – MVC

Para exemplificar como o PRADO separa a lógica da apresentação a típica aplicação


“Hello World” onde ao clicar em um botão com o label “Clique”, o seu label é modificado para
“Hello World” será demonstrada a seguir.

A imagem abaixo mostra a estrutura do aplicativo:

fig. 5.5.1

Essa aplicação consiste em três arquivos: index.php, Home.page e Home.php, que


estão organizados como na imagem acima. Note que a estrutura de diretórios listada acima
pode ser customizada. Por exemplo, pode-se mover o diretório protected para fora do
diretório do servidor Web (www) para ampliar a segurança dos dados.

A) Descrição rápida dos diretórios:

assets – Diretório para publicar arquivos privados gerados.


Veja o endereço http://www.pradosoft.com/demos/quickstart/?page=Advanced.Assets para
maiores detalhes. Este diretório deve ter permissão de escrita para o servidor Web.

protected – Diretório base para armazenar dados e arquivos de script privados. Este
diretório deve ser configurado como inacessível a usuários finais.

runtime – Armazena dados durante a execução das páginas, como o estado da aplicação,
dados de cache, etc. Este diretório deve ter permissão de escrita para o servidor Web.

pages – Diretório base as páginas do PRADO devem ficar.

Para facilitar a construção dessa estrutura de diretórios o desenvolvedor pode utilizar o


script framework/prado-cli.php para criar um projeto PRADO. Por exemplo, o comando
“php caminho/framework/prado-cli.php -c helloworld” cria uma pasta chamada
helloword com a estrutura de diretórios e alguns arquivos prontos. Este comando deve ser
digitado em um prompt do sistema operacional e no caso do Windows o arquivo php.exe deve
estar devidamente configurado na variável PATH do S.O.

19
PRADO, UM FRAMEWORK para o PHP 5
B) O exemplo Hello Word

1-Arquivo índex.php:

Script de entrada das aplicações PRADO. Este arquivo é requerido por todas as
aplicações prado e é o único arquivo que pode ser acessado diretamente por usuários finais.
Conteúdo arquivo para o exemplo:

require_once('path/to/prado.php'); // inclui o script do PRADO


$application=new TApplication; // Instancia uma aplicação PRADO
$application->run(); // Roda a aplicação

2-Arquivo home.page:

Página padrão que será exibida na abertura do site ou quando o usuário não especifica
a URL da página corretamente. É nela que o template do site é definido, especificando a
apresentação e layout dos componentes. Neste exemplo, foram utilizados dois componentes, o
TForm e o TButton, que correspondem as tags HTML <Form> e <Input>, respectivamente. O
template contém o seguinte conteúdo:

<html>
<body>
<com:TForm>
<com:TButton Text="Clique aqui" OnClick="botaoClicado” />
</com:TForm>
</body>
</html>

O evento OnClick foi associado ao método “botaoClicado”, ou seja, quando o usuário


clicar no botão com o Text “Clique aqui” o método “botaoClicado” será chamado.

3-Arquivo home.php:

Classe do template home.page que implementa o método “botaoClicado”

class Home extends TPage


{
public function botaoClicado($sender,$param)
{
// $sender referencia o botão (objeto chamador)
$sender->Text="Hello World!";
}
}

20
PRADO, UM FRAMEWORK para o PHP 5
O método “botaoClicado” simplesmente altera o atributo Text do TButton exibindo a
mensagem “Hello Word!”.

Pronto! A aplicação está pronta e pode ser acessada em:

http://Endereço-do-servidor-Web/helloworld/

Um exemplo online da aplicação pode ser acessado em:

http://www.pradosoft.com/demos/helloworld/

21
PRADO, UM FRAMEWORK para o PHP 5
6-APLICAÇÃO PROTÓTIPO
6.1 – Introdução

A aplicação protótipo escolhida foi um simples sistema de postagem, edição e exclusão


de artigos, realizados por um usuário qualquer, denominada “artigos”. Esta aplicação é uma
simplificação do tutorial de um sistema de Blog simples, encontrado no site do PRADO, que
possui autenticação e gerenciamento de usuários.

Nesta aplicação serão exibidos os artigos já existentes e através de um menu o usuário


poderá realizar a operação de uma nova postagem. A edição e exclusão serão acessadas com
o clique no título do artigo.

Os artigos serão armazenados em um banco de dados SQLite (Mas facilmente


adaptável a outros bancos, bastando apenas mudar a string de conexão).

6.2 – Especificações

A) Diagrama de Casos de Uso:

fig. 6.2.1

B) Classes:

• ListPost Mostra os artigos resumidos, ordenados pelo tempo decrescente;


• ReadPost Mostra o artigo escolhido em detalhes;
• NewPost Permite a criação de um novo artigo;
• EditPost Permite a edição de um artigo;
• PostRecord Classe que representa a tabela artigos do banco de dados;
• PostRenderer Classe que elabora uma configuração visual para um artigo a ser
listado em ListPost;

22
PRADO, UM FRAMEWORK para o PHP 5
* Todos os arquivos “*.page” necessitam de uma classe com o mesmo nome, porem no formato
“*.php”. Isto é exigido pelo PRADO, mas as classes não precisam de ter uma implementação.

C) SQL da tabela de artigos:

/* cria a tabela de artigos*/


CREATE TABLE artigos (
artigo_id INTEGER NOT NULL PRIMARY KEY,
data_criacao INTEGER NOT NULL, /* UNIX timestamp */
titulo VARCHAR(256) NOT NULL, /* título do artigo */
conteudo TEXT, /* conteúdo do artigo */);

D) Estrutura de pastas e arquivos da aplicação “artigos”:

fig. 6.2.2

23
PRADO, UM FRAMEWORK para o PHP 5
6.3 – Implementação

A) Criando a estrutura básica:

Para facilitar a construção da estrutura de diretórios o desenvolvedor pode utilizar o


script framework/prado-cli.php para criar um projeto PRADO. Como explicado na seção
MVC (5.5a), o comando digitado deverá ser:

“php caminho/framework/prado-cli.php -c artigos”

Nenhum usuário deve ter acesso à pasta protected. Considerando que o servidor
apache é o utilizado, um arquivo “.htacces” com um simples conteúdo: “deny from all” foi
gerado com o intuito de impedir o acesso a esta pasta.

B) Criando o banco de dados:

Salve o comando SQL mostrado na seção 6.3c em um arquivo com o nome de


“tabela.sql”, baixe o sqlite em (http://www.sqlite.org/download.html) de acordo com seu sistema
operacional.

No prompt de comando do sistema operacional, digite o caminho do arquivo sqlite, o


nome do arquivo “.db” a ser gerado e em seguida o caminho do arquivo “tabela.sql” como no
exemplo a seguir:

sqlite artigos.db < tabela.sql *

Após ser gerado, o arquivo artigos.db deve ser movido para uma pasta data dentro do
diretório protected (Veja a figura de estrutura de pastas).

*Caso prefira utilizar um programa em vez da linha de comando, existe o Sqlite Manager uma
extensão para o Firefox que simplifica o processo de criação do banco sqlite.
(https://addons.mozilla.org/en-US/firefox/addon/5817)

24
PRADO, UM FRAMEWORK para o PHP 5
C) Integrando o banco de dados com a aplicação:

Abra o arquivo artigos/pages/application.xml. Esse arquivo no formato XML é


responsável por diversas configurações da aplicação prado, entre elas a integração com o
banco de dados. Insira os seguintes módulos no arquivo applicaion.xml:

<modules>

<module id="db" class="System.Data.TDataSourceConfig">


<database ConnectionString="sqlite:protected/data/artigos.db" />
</module>

<module class="System.Data.ActiveRecord.TActiveRecordConfig"
ConnectionID="db" />

</modules>

Os dois módulos acima integram o banco com a aplicação. O primeiro informa como o
PRADO deve se conectar ao banco, neste caso através da string do sqlite que informa o local
do arquivo artigos.db ( Caso se utilize outro banco, como o mysql, a string de conexão tem que
ser compatível com o banco escolhido). O último módulo integra a conexão do banco de dados
ao ActiveRecord do PRADO. Como pode se perceber o prado utiliza o formato namespace
assim como o JAVA onde System.Data.ActiveRecord.TActiveRecordConfig representa o
caminho Prado/Framework/Data/ActiveRecord/TActiveRecodConfig.php.

O formato namespace do prado entende System como diretório do framework


(prado/framework) e Application como o caminho da aplicação (artigos/protected).

25
PRADO, UM FRAMEWORK para o PHP 5
D) Criando a classe AR:

O próximo passo é criar a classe representante desse banco de dados, conhecida


como classe AR para que possamos utilizar ActiveRecords para a manipulação dos dados em
vez de usar comandos SQLs.
A classe PostRecord.php será a classe AR do banco de dados artigos e deverá ficar
dentro do diretório “artigos/protected/database” (veja na figura 6.2d) e deverá ter o seguinte
conteúdo: (Pode ser criado automaticamente, veja mais no tutorial de Blog oficial do PRADO
ao qual este foi baseado)
<?php
/**
* Auto generated by prado-cli.php on 2008-07-27 05:32:18.
*/
class PostRecord extends TActiveRecord
{
const TABLE='artigos';

public $artigo_id;
public $data_criacao;
public $titulo;
public $conteudo;

public static function finder($className=__CLASS__)


{
return parent::finder($className);
}

}
?>
A constante TABLE representa o nome da tabela: artigos. As variáveis $artigo_id,
$data_criacao, $titulo e $conteudo representam os campos da tabela artigos.

O método estático finder() nos permite realizar consultas e recuperar dados dos objetos
i (representante da tabela artigos).

26
PRADO, UM FRAMEWORK para o PHP 5
Para finalizar temos que incluir a classe na aplicação. Para isto temos que adicionar a
seguinte linha ao arquivo application.xml, dentro da tag application:

<paths>
<using namespace="Application.database.*" />
</paths>

Este path adiciona todos os arquivos do diretório artigos/protected/database à


aplicação.

E) Criando um template com um simples layout para a aplicação:

Dentro da pasta protected, crie uma pasta com o nome layout e dentro desta, dois
arquivos: MainLayout.php e MainLayou.tpl.

A seguir, o conteúdo do template MainLayout.tpl:

<com:THead>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >

</com:THead>

<body>

<com:TForm>

<div id="page">

<div id="header">

Artigos

</div>

<div id="main">

<com:TContentPlaceHolder ID="Main" />

</div>

<div id="footer">

<com:THyperLink Text="Principal" SkinID="MainMenu"

27
PRADO, UM FRAMEWORK para o PHP 5
NavigateUrl="<%= $this->Service->DefaultPageUrl
%>" /> |

<com:THyperLink Text="Novo Artigo" SkinID="MainMenu"

NavigateUrl="<%= $this->Service-
>constructUrl('posts.NewPost') %>"

/>

<br/>

<%= PRADO::poweredByPrado() %>

</div>

</div>

</com:TForm>

</body>

</html>

O arquivo de template se assemelha com uma página em HTML como, inclusive possui
tags usadas no HTML. Apenas um componente foi utilizado, o TContentPlaceHolder que é um
recipiente, ou local, onde o conteúdo da aplicação será inserido e exibido. As tags <%= e %>
representam tags de expressão e neste exemplo é inserido um logotipo do PRADO por meio da
instrução PRADO::poweredByPrado().

O conteúdo da classe associada a este template é bem simples, na verdade a classe é vazia.
Sua existência é exigida pelo PRADO quando se trata de arquivos de template (.tpl). Veja
abaixo:

<?php

class MainLayout extends TTemplateControl

?>

F) Criando a pagina de listagem dos artigos (Página Principal) e a página de leitura de um


artigo.

Para criar a listagem dos artigos, três etapas terão de ser seguidas: A criação dos itens
ListPost, ReadPost e PostRenderer. O primeiro irá listar todos os artigos resumidos e com um
repetidor, o segundo ira exibir um artigo na integra e o último será o modelo de um artigo, onde
serão configurados o título, hora de criação e o conteúdo do artigo.

28
PRADO, UM FRAMEWORK para o PHP 5
Antes de implementar a leitura dos artigos vamos setar a página ListPost como padrão
da aplicação. Para isso devemos abrir o arquivo application.xml e incluir as seguintes linhas
dentro da tag application:

<services>

<service id="page" class="TPageService" DefaultPage="posts.ListPost">

<pages MasterClass="Application.layouts.MainLayout" />

</service>

</services>

A seguir o template ListPost.page e da classe ListPost.php.

ListPost.page:

<%@ Title="Listagem dos Artigos" %>

<com:TContent ID="Main">

<com:TRepeater ID="Repeater"

ItemRenderer="Application.pages.posts.PostRenderer"

AllowPaging="true"

AllowCustomPaging="true"

PageSize="5"

/>

<com:TPager ControlToPaginate="Repeater"
OnPageIndexChanged="pageChanged" />

</com:TContent>

29
PRADO, UM FRAMEWORK para o PHP 5
ListPost.php:

<?php

class EditPost extends TPage

public function onInit($param)

parent::onInit($param);

$postRecord=$this->Post;

if(!$this->IsPostBack)

// Popula os controles com os dados do artigo

$this->TitleEdit->Text=$postRecord->titulo;

$this->ContentEdit->Text=$postRecord->conteudo;

public function saveButtonClicked($sender,$param)

if($this->IsValid) // Validacoes foram bem sucedidas

$postRecord=$this->Post;

$postRecord->titulo=$this->TitleEdit->SafeText;

$postRecord->conteudo=$this->ContentEdit->SafeText;

$postRecord->save();

$url=$this->Service->
constructUrl('posts.ReadPost',array('id'=>$postRecord->artigo_id));

$this->Response->redirect($url);

30
PRADO, UM FRAMEWORK para o PHP 5
}

protected function getPost()

$postID=(int)$this->Request['id'];

$postRecord=PostRecord::finder()->findByPk($postID);

if($postRecord===null)

throw new THttpException(500,'Artigo inexistente.');

return $postRecord;

?>

A seguir , o template ReadPost.page e a classe ReadPost.php.

ReadPost.page:

<com:TContent ID="Main">

<h2>

<com:TLiteral Text="<%= $this->Post->titulo %>" />

</h2>

<com:TControl>

<a href="<%= $this->Service->constructUrl('posts.EditPost',array('id'=>$this->Post-


>artigo_id))%>">Editar</a> |

<com:TLinkButton Text="Deletar"

OnClick="deletePost"

Attributes.onclick="javascript:if(!confirm('Tem certeza?')) return false;" />

</com:TControl>

<hr />

<p>Data:

<com:TLiteral Text="<%= date('d/m/Y h:i:s', $this->Post->data_criacao) %>" /></p><hr /><p>

31
PRADO, UM FRAMEWORK para o PHP 5
<com:TLiteral Text="<%= $this->Post->conteudo %>" />

</p>

</com:TContent></p>

</com:TContent>

ReadPost.php:

<?php

class ReadPost extends TPage

private $_artigo;

public function onInit($param)

parent::onInit($param);

$postID=(int)$this->Request['id'];

$this->_artigo=PostRecord::finder()->findByPk($postID);

if($this->_artigo===null) // if post id is invalid

throw new THttpException(500,'Artigo não


encontrado.');

$this->Title=$this->_artigo->titulo;

public function getPost()

return $this->_artigo;

public function deletePost($sender,$param)

// Deleta o artigo no banco de dados

$this->_artigo->delete();

// Redireciona para a pagina principal

32
PRADO, UM FRAMEWORK para o PHP 5
$this->Response->redirect($this->Service->DefaultPageUrl);

} ?>

A seguir , o template PostRenderer.page e a classe PostRenderer.php.

PostRenderer.page:

<div class="post-box">

<h3>

<com:THyperLink Text="<%# $this->Data->titulo %>"

NavigateUrl="<%# $this->Service-
>constructUrl('posts.ReadPost',array('id'=>$this->Data->artigo_id))
%>" />

</h3>

<hr />

Data: <com:TLiteral Text="<%# date('d/m/Y - H:i:s', $this->Data-


>data_criacao) %>" />

<hr />

<div class="depo">

<com:TLiteral Text="<%# PostRenderer::resumir($this->Data-


>conteudo,120) %>" />

<div style="text-align: right;">

<com:THyperLink Text="Ler Mais.."

NavigateUrl="<%# $this-
>Service->constructUrl('posts.ReadPost',array('id'=>$this->Data-
>artigo_id)) %>"

Visible="<%=
PostRenderer::vairesumir($this->Data->conteudo,120) %> "/>

</div>

</div>

</div>

33
PRADO, UM FRAMEWORK para o PHP 5
PostRenderer.php:

<?php

class PostRenderer extends TRepeaterItemRenderer

protected function resumir($string,$chars) {

if (strlen($string) > $chars) {

$var=0;

while($var == 0){

if( (substr($string,$chars,1)) == '


' || (substr($string,$chars,1)) == null ||
ord(substr($string,$chars,1)) == 13 ){

$var=1;

} else{

$chars++;

return substr($string,0,$chars) . "...";

} else

return substr($string,0,$chars);

protected function vairesumir($string,$chars) {

if (strlen($string) > $chars) {

return 1;

} else

return 0;

34
PRADO, UM FRAMEWORK para o PHP 5
G) Criando as páginas de edição dos artigos:

Para editar um artigo o usuário terá de clicar no titulo do artigo da página principal. Os
arquivos que implementam esta funcionalidade são EditPost.page e EditPost.php.

EditPost.page:

<%@ Title="Editar Artigo" %>

<com:TContent ID="Main">

<h1>Editar Artigo</h1>

<span>Titulo:</span>

<com:TRequiredFieldValidator

ControlToValidate="TitleEdit"

ErrorMessage="Digite um titulo."

Display="Dynamic" />

<br/>

<com:TTextBox ID="TitleEdit" Columns="50" /><br/>

<br/>

<span>Conteudo:</span>

<com:TRequiredFieldValidator

ControlToValidate="ContentEdit"

ErrorMessage="Digite um conteudo."

Display="Dynamic" />

<br/>

<com:THtmlArea ID="ContentEdit" />

<br/>

<com:TButton Text="Salvar" OnClick="saveButtonClicked" />

</com:TContent>

35
PRADO, UM FRAMEWORK para o PHP 5
EditPost.php:

<?php

class EditPost extends TPage

public function onInit($param)

parent::onInit($param);

$postRecord=$this->Post;

if(!$this->IsPostBack)

// Popula os controles com os dados do artigo

$this->TitleEdit->Text=$postRecord->titulo;

$this->ContentEdit->Text=$postRecord->conteudo;

public function saveButtonClicked($sender,$param)

if($this->IsValid) // Validacoes foram bem sucedidas

$postRecord=$this->Post;

$postRecord->titulo=$this->TitleEdit->SafeText;

$postRecord->conteudo=$this->ContentEdit->SafeText;

$postRecord->save();

$url=$this->Service->
constructUrl('posts.ReadPost',array('id'=>$postRecord->artigo_id));

$this->Response->redirect($url);

36
PRADO, UM FRAMEWORK para o PHP 5
}

protected function getPost()

$postID=(int)$this->Request['id'];

$postRecord=PostRecord::finder()->findByPk($postID);

if($postRecord===null)

throw new THttpException(500,'Artigo inexistente.');

return $postRecord;

?>

H) Criando as páginas de inclusão de um novo artigo:

As páginas de inclusão de novos artigos são bem parecidas com as de edição. A seguir
o template NewPost.page e a classe NewPost.php.

NewPost.page:

<%@ Title="Novo Artigo" %>

<com:TContent ID="Main">

<h1>Criar novo Artigo</h1>

<span>Titulo:</span>

<com:TRequiredFieldValidator

ControlToValidate="TitleEdit"

ErrorMessage="Digite um titulo."

Display="Dynamic" />

<com:TTextBox ID="TitleEdit" Columns="50" /><br/>

<span>Conteudo:</span>

<com:TRequiredFieldValidator

37
PRADO, UM FRAMEWORK para o PHP 5
ControlToValidate="ContentEdit"

ErrorMessage="Digite um conteudo."

Display="Dynamic" />

<br/>

<com:THtmlArea ID="ContentEdit" />

<com:TButton Text="Criar" OnClick="createButtonClicked" />

</com:TContent>

NewPost.php:

<?php

class NewPost extends TPage

public function createButtonClicked($sender,$param)

if($this->IsValid) // Passou nas validaçoes

$postRecord=new PostRecord;

$postRecord->titulo=$this->TitleEdit->SafeText;

$postRecord->conteudo=$this->ContentEdit->SafeText;

$postRecord->data_criacao=time();

$postRecord->save();

//Redireciona para a pagina principal

$url=$this->Service->
constructUrl('posts.ReadPost',array('id'=>$postRecord->artigo_id));

$this->Response->redirect($url);

?>

38
PRADO, UM FRAMEWORK para o PHP 5
I) Últimos ajustes, inserindo links na página inicial:

Para facilitar o acesso a pagina principal e à pagina de novos artigos vamos criar dois
links dentro do arquivo de template MainTemplate.tpl. Abra o arquivo e insira dentro da div
footer o seguinte conteúdo:

<div id=”footer”>

<com:THyperLink Text="Principal"

NavigateUrl="<%= $this->Service->DefaultPageUrl %>" />

<com:THyperLink Text="Novo Artigo"

NavigateUrl="<%= $this->Service->constructUrl('posts.NewPost') %>"

/>

</div>

J) Veja o exemplo no site http://www.luizfernando.net/artigos/ ou baixe os códigos fontes em


http://www.luizfernando.net/artigos/artigos.rar

39
PRADO, UM FRAMEWORK para o PHP 5
6.3 – Resultados

A) Procedimentos para testes:

Terminado a aplicação, é preciso testá-la para saber se está funcionando corretamente


e conforme o esperado. Para isso, considerando que o diretório “artigos” está em um servidor
web, devemos rodar a aplicação em um web-browser(navegador web), indicando o endereço
do servidor e a pasta “artigos”. Caso o servidor seja local o endereço deve ser parecido com:

http://localhost/artigos ou http://127.0.0.1/artigos

Caso esteja em um servidor dentro ou fora de rede, utilize o endereço IP ou domínio


DNS apropriado, apontando para a pasta “artigos”, quem contém o arquivo “índex.php”
(dependendo do servidor, não é preciso indicá-lo)

B) Considerações

A aplicação protótipo escolhida é simples, mas aborda bem os recursos do PRADO e


seus componentes. Apesar de simples, dificuldades poderão ser encontradas, especialmente
por desenvolvedores pouco acostumados a trabalhar com para a WEB. Todavia, o PRADO
oferece diversos recursos que possibilitam o encontro de erros e falhas e registros do
funcionamento da aplicação (logs). Saiba mais sobre esses assuntos em:
http://www.pradosoft.com/demos/quickstart/?page=Advanced.Logging
e http://www.pradosoft.com/demos/quickstart/?page=Advanced.Error,
que são partes do tutorial QuickStart.

40
PRADO, UM FRAMEWORK para o PHP 5

C) Telas da aplicação em funcionamento

Compare a aplicação desenvolvida com as seguintes telas de funcionamento:


• Fig6.3.1 - Página Inicial (Visualização dos Resumos dos Artigos)

41
PRADO, UM FRAMEWORK para o PHP 5

• Fig6.3.2 - Visualização do Artigo inteiro:

42
PRADO, UM FRAMEWORK para o PHP 5

• Fig6.3.3 - Página de Inclusão de Um Novo Artigo

43
PRADO, UM FRAMEWORK para o PHP 5

• Fig6.3.4 - Página de Edição de Artigos

44
PRADO, UM FRAMEWORK para o PHP 5
• Fig6.3.5 - Página de Exclusão de Artigos

45
PRADO, UM FRAMEWORK para o PHP 5
7-CONHECENDO MAIS O PRADO
Esta pesquisa teve como objetivo apresentar o PRADO, um framework para PHP 5 e
mostrar algumas de suas funcionalidades. O PRADO possui muitas outras funcionalidades
como controle de acesso, uso de urls amigáveis, teclado virtual, cache e muitas outras citadas
durante a elaboração deste documento. Nesta seção estão listados links com outros tutorias
que irão enriquecer o conhecimento com esta plataforma de desenvolvimento. Apesar de
inglês, a didática dos tutorias são um destaque.

7.1- API do PRADO:


http://www.pradosoft.com/docs/manual/

7.2 - PRADO QuickStart Tutorial:


http://www.pradosoft.com/demos/quickstart/

ou http://www.pradosoft.com/docs/quickstart.pdf (Versão PDF)

7.3 – PRADO Blog Tutorial:


http://www.pradosoft.com/demos/blog-tutorial/

ou http://www.pradosoft.com/docs/movies/blog/videos.html (Versão Vídeo)

7.4 – SQL Map Tutorial:


http://www.pradosoft.com/demos/sqlmap/

7.5 – Video do HelloWorld Tutorial:


http://www.pradosoft.com/docs/movies/HelloWorld.mov

7.6 – PRADO Wiki:


http://www.pradosoft.com/wiki/

7.8 – Forum para tirar dúvidas :


http://www.pradosoft.com/forum/

7.9- Aplicativos de demonstração:


http://www.pradosoft.com/download/

7.10 – Sobre o PRADO:


http://www.pradosoft.com/about/

46
PRADO, UM FRAMEWORK para o PHP 5
8- CONCLUSÕES
A utilização de frameworks para construir aplicações para diversos fins (web ou
desktop) é uma tendência que já vem sendo praticada por alguns anos. O uso dessas
ferramentas realmente impulsiona o desenvolvimento de aplicações. Geralmente a aplicação
fica um pouco mais lenta se comparada à desenvolvida puramente, sem o uso de frameworks,
mas é preciso saber quando usá-los corretamente.

O PRADO foi o framework escolhido por ser um dos mais diferentes dentre os
existentes para o PHP, pois utiliza o conceito de componentes e eventos. Apesar de não ser o
mais popular, o PRADO cumpre suas tarefas de desenvolver uma aplicação web com a lógica
separada do layout e o tempo de desenvolvimento é incrivelmente menor. Os outros
frameworks para PHP também são excelentes, é preciso saber qual deve ser usado para um
determinado fim. Cada framework se adéqua melhor a uma situação diferente.

Nos dias de hoje, o cliente não que saber qual a tecnologia utilizada, ele quer preço,
qualidade e curto prazo. O desenvolvedor deve saber quais medidas tomar na elaboração de
um novo projeto para que todas estas questões sejam satisfeitas. Nesse contexto, o uso de
frameworks tornou-se um grande aliado pois além de open-source em sua grande maioria, eles
conseguem oferecer um menor tempo no desenvolvimento e ao mesmo tempo conciliar uma
boa qualidade e desempenho.

47
PRADO, UM FRAMEWORK para o PHP 5
9- BIBLIOGRAFIA
Sítios da Internet:

-Framework, Wikipédia
http://pt.wikipedia.org/wiki/Framework (Acesso: 18 de julho de 2008)

- Reuso: Padrões de Projeto e Frameworks, UFSC


http://www.inf.ufsc.br/~cybis/ine5322/SeminarioDPeFWfinal.pdf
(Acesso: 18 de julho de 2008)

-Blog de Tecnologia Locaweb


http://tecblog.locaweb.com.br/?tag=mvc (Acesso: 23 de julho de 2008)

-MVC, Wikipedia
http://pt.wikipedia.org/wiki/MVC (Acesso: 25 de julho de 2008)

- Active Records, Wikipedia

http://en.wikipedia.org/wiki/Active_record (Acesso: 25 de julho de 2008)

-Ajax, Wikipedia
http://pt.wikipedia.org/wiki/AJAX_(programação) (Acesso: 25 de julho de 2008)

-Internacionalização e Localização, Wikipedia


http://pt.wikipedia.org/wiki/Internacionalização (Acesso: 26 de julho de 2008)

- PHP, Wikipedia
http://pt.wikipedia.org/wiki/Php (Acesso: 26 de julho de 2008)

- POO, Wikipedia
http://pt.wikipedia.org/wiki/POO (Acesso: 26 de julho de 2008)

- Postback, Wikipedia
http://en.wikipedia.org/wiki/Postback (Acesso: 26 de julho de 2008)

-CAPTHCA, Wikipedia
http://pt.wikipedia.org/wiki/CAPTCHA (Acesso: 26 de julho de 2008)

-Spams / Spammers, Wikipedia


http://pt.wikipedia.org/wiki/Spam (Acesso: 26 de julho de 2008)

48
PRADO, UM FRAMEWORK para o PHP 5
-Conteúdo Geral e Específico:
A. http://www.pradosoft.com http://www.pradosoft.com/demos/
(Ultimo Acesso: 05 de julho de 2008)

Livro: (Conceitos e normas UML)


Java: como programar / H.M. Deitel, P. J. Deitel; Tradução Edson Furmankiewicz; Revisão
técnica Fábio Lucchinni. - 6ª Ed – São Paulo, Pearson Prentice Hall 2005. Titulo original: Java
how to program, 6th.

49

Você também pode gostar