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 PHP5

Embed Size (px)

Citation preview

Page 1: Prado, um Framework para o PHP5

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 )

Page 2: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

1

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

Page 3: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

2

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

Page 4: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

3

AGRADECIMENTOS E DEDICATÓ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.

Page 5: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

4

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

Page 6: Prado, um Framework para o PHP5

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

Page 7: Prado, um Framework para o PHP5

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

Page 8: Prado, um Framework para o PHP5

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

Page 9: Prado, um Framework para o PHP5

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

Page 10: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

9

Page 11: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

10

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)

Page 12: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

11

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)

Page 13: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

12

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)

Page 14: Prado, um Framework para o PHP5

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

Page 15: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

14

Page 16: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

15

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.

Page 17: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

16

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.

Page 18: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

17

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).

Page 19: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

18

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.

Page 20: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

19

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.

Page 21: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

20

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!";

}

}

Page 22: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

21

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/

Page 23: Prado, um Framework para o PHP5

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

Page 24: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

23

* 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

Page 25: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

24

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)

Page 26: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

25

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).

Page 27: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

26

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).

Page 28: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

27

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"

Page 29: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

28

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.

Page 30: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

29

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>

Page 31: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

30

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);

}

Page 32: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

31

}

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>

Page 33: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

32

<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.');

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

}

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

Page 34: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

33

$this->Response->redirect($this->Service->DefaultPageUrl);

}

} ?>

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

-box">

PostRenderer.page:

<div class="post

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

Page 35: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

34

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;

}

}

Page 36: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

35

G) Criando as páginas de edição dos artigos:

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

Para editaarquivos qu

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>

Page 37: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

36

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);

}

Page 38: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

37

}

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:

s de inclusão de novos artigos são bem parecidas com as de edição. A seguir st.page e a classe NewPost.php.

vo Artigo" %>

As páginao template NewPo

NewPost.page:

<%@ Title="No

<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

Page 39: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

38

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);

}

}

}

?>

Page 40: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

39

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"

ateUrl="<%= $this->Service->DefaultPageUrl %>" /> Navig

<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

Page 41: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

40

6.3 – Resultados

A) Procedimentos para testes:

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

erado. Para isso, considerando que o diretório “artigos” está em um servidor

m um web-browser(navegador web), indicando o endereço

reço deve ser parecido com:

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

e conforme o esp

web, devemos rodar a aplicação e

do servidor e a pasta “artigos”. Caso o servidor seja local o ende

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”

endo do servidor, não é preciso indicá-lo)

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

or desenvolvedores pouco acostumados a trabalhar com para a WEB. Todavia, o PRADO

ferece diversos recursos que possibilitam o encontro de erros e falhas e registros do

namento da aplicação (logs). Saiba mais sobre esses assuntos em:

radosoft.com/demos/quickstart/?page=Advanced.Logging

osoft.com/demos/quickstart/?page=Advanced.Error,

ue são partes do tutorial QuickStart.

(depend

B) Considerações

p

o

funcio

http://www.p

e http://www.prad

q

Page 42: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

41

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)

Page 43: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

42

teiro:

• Fig6.3.2 - Visualização do Artigo in

Page 44: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

43

o Artigo

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

Page 45: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

44

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

Page 46: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

45

• Fig6.3.5 - Página de Exclusão de Artigos

Page 47: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5

46

7-CONHECENDO MAIS O PRADO

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

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/

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/

7.4 – SQL Map Tutorial:

Page 48: Prado, um Framework para o PHP5

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

tiliza o conceito de componentes e eventos. Apesar de não ser o

re suas tarefas de desenvolver uma aplicação web com a lógica

arada do mento é incrivelmente menor. Os outros

é preciso saber qual deve ser usado para um

lhor a uma situação diferente.

Nos dias de hoje, o cliente não que saber qual a tecnologia utilizada, ele quer preço,

qualida omar na elaboração de

questões sejam satisfeitas. Nesse contexto, o uso de

de open-source em sua grande maioria, eles

onseg ento e ao mesmo tempo conciliar uma

alidad

dos mais diferentes dentre os

existentes para o PHP, pois u

mais popular, o PRADO cump

sep layout e o tempo de desenvolvi

frameworks para PHP também são excelentes,

determinado fim. Cada framework se adéqua me

de e curto prazo. O desenvolvedor deve saber quais medidas t

um novo projeto para que todas estas

frameworks tornou-se um grande aliado pois além

c uem oferecer um menor tempo no desenvolvim

boa qu e e desempenho.

47

Page 49: Prado, um Framework para o PHP5

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:

-MVC, Wikipedia

-Ajax, Wikipedia

ulho 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)

//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)

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)

http://pt.wikipedia.org/wiki/AJAX_(programação) (Acesso: 25 de j

48

Page 50: Prado, um Framework para o PHP5

PRADO, UM FRAMEWORK para o PHP 5 -Conteúdo Geral e Específico

A. http://www.pr

:

adosoft.com http://www.p

e julho de 2008)

radosoft.com/demos/

(Ultimo Acesso: 05 d

Livro: (Conceitos e normas UML)

programar / H.M. Deitel, P. J. Deitel; Tradução Edson FurmanJava: como kiewicz; Revisão

Hall 2005. Titulo original: Java técnica Fábio Lucchinni. - 6ª Ed – São Paulo, Pearth

son Prentice

how to program, 6 .

49