A maior rede de estudos do Brasil

Grátis
475 pág.
LIVRO Aplicativos em PHP

Pré-visualização | Página 42 de 50

GUI prontos que podemos usar para compor nossas máscaras (masks). Classe 
base para objetos que permitem a usuários interagirem com a aplicação: botões, menus, .
Esta lista (dos principais) é aninhada para reproduzir a herança das classes. Todos estes objetos 
extendem a classe P4A_Widget. Veja a referência de código para detalhes.
 * Button
 * Canvas
 * Field
 * Frame
 o Fieldset
 * Menu
 * Message
http://pt.wikibooks.org/wiki/Aplicativos_em_PHP
Aplicativos em PHP (WikiBooks - democratizando o conhecimento) - Página 250/475
 * Table
 * Tab pane
 * Toolbar
 o Actions toolbar
 o Navigation toolbar
 o Simple toolbar
 o Standard toolbar
 o Quit toolbar
Desenvolvendo Aplicativos com o P4A
Pré-Requisitos:
- Sistemas Operacionais Linux ou Windows
- PHP 4.3.x/4.4.x/5.x.x com Apache 1.3.x/2.0.x
- A biblioteca PEAR/DB
- Um banco de dados suportado pela bibliteca acima, caso o seu aplicativo use banco
Quando instalamos o Xampp (http://xampp.sf.net), ele provê todos os requisitos do P4A, inclusive 
tem versão para ambos os sistemas operacionais.
Quando descompactamos o p4a ele cria a seguinte estrutura de diretórios:
p4a/applications
p4a/docs
p4a/icons
p4a/libraries
p4a/p4a
p4a/themes
p4a/index.php
p4a/p4a.php
Os aplicativos criados devem ficar na pasta “applications”.
Na pasta “docs” está toda a referência do P4A.
Em “icons” estão os ícones utilizados, em vários tamanhos.
A pasta “p4a” é a principal do framework. Nela estão as bibliotecas, os objetos, os locales e mais 
alguns componentes importantes.
Os temas devem ficar na pasta “themes”
http://pt.wikibooks.org/wiki/Aplicativos_em_PHP
Aplicativos em PHP (WikiBooks - democratizando o conhecimento) - Página 251/475
Exemplo de Estrutura Mínima de uma Aplicação em P4A
<ola_mundo>
index.php
 <objects>
 ola_mundo.php
 ola_mascara.php
Caso a aplicação utilize algum upload deverá ter uma pasta extra “uploads”, contendo uma sub 
pasta “tmp” e ambas com permissão 777.
Permissões: os demais arquivos: index.php, ola_mundo.php e ola_mascara.php devem ter 
permissão de leitura, escrita e execução para o dono e leitura e execução para Outros.
Primeiro Exemplo – Olá Mundo
1)Criamos uma pasta ola_mundo dentro da pasta applications.
2)Criamos dentro de ola_mundo o arquivo index.php com o seguinte conteúdo:
index.php
<?php
 // Carregar a biblioteca do framework
require_once( dirname(__FILE__) . '/../../p4a.php' );
 
// Instanciar a classe que define a aplicação ola_mundo.
// A chasse encontra-se no diretório objects em um arquivo
// com o mesmo nome da classe
$app =& p4a::singleton("ola_mundo");
 
// Lançar a aplicação
$app->main();
?>
No arquivo index.php existe uma chamada para a classe principal do aplicativo que encontra-se no 
arquivo de mesmo nome (ola_mundo.php) dentro da pasta objects.
ola_mundo.php
<?php
 
// A classe principal da aplicação sempre estende a classe p4a do framework
class ola_mundo extends P4A{
 // Construtor da classe
 function ola_mundo () {
 // A primeira coisa a fazer, sempre é lançar o construtor da 
super classa p4a
 parent::p4a();
 
 // A seguir o código para executar, tipicamente abre a primeira 
máscara (masks)
 $this->openMask("mensagem");
 }
}
http://pt.wikibooks.org/wiki/Aplicativos_em_PHP
Aplicativos em PHP (WikiBooks - democratizando o conhecimento) - Página 252/475
?>
Veja que a classe principal abre o arquivo de máscara (mensagem.php).
mensagem.php
<?php
 
// Para criar uma máscara, vem criar uma classe que herda da classe P4A_Mask.
class mensagem extends P4A_Mask{
 // Construtor da classe
 function mensagem() {
 // Para a aplicação a primeira coisa que se lança é o construtor 
da classe pai
 parent::P4A_Mask();
 // Eles vem instanciar o widget para posicionar sobre a máscara 
usando o método
 // build da máscara (ou melhor, da classe P4A_Objects da qual 
tudo deriva
 
 // O objeto box é um Label de texto não modificável.
 // Uma vez instanciado o texto adota a mesma posição, formatável 
em HTML
 // acessável com $this->box
 
 $this->build("p4a_box","box");
 $this->box->setValue("Olá Mundo");
 
 // O objeto frame é um tipo de container disponível que 
 // colabora para o posicionamento relativo (sem tabela html) dos 
widget
 //em questão, caso se acesse o widget criado usando o apontador 
retornado com build
 $frm =& $this->build("p4a_frame","frame");
 $frm->anchorCenter($this->box);
 
 // Finalmente visualizamos o container (e o widget contido)
 // em uma de 3 seções do template (por default são 
top,menu,main)
 $this->display("main", $frm);
 
 $this->box->addAction("onClick");
 $this->intercept($this->box, "onClick", "change_box");
 }
 function change_box()
 {
 if ($this->box->getValue() == "Olá mundo") {
 $this->box->setValue("Clique para acessar");
 } else { // Abaixo adiciona um ponto ao final 
 $this->box->setValue($this->box->getValue() . ".");
 }
 }
}
?>
http://pt.wikibooks.org/wiki/Aplicativos_em_PHP
Aplicativos em PHP (WikiBooks - democratizando o conhecimento) - Página 253/475
A pasta objects pode ou não conter uma sub pasta “masks”. Caso criemos a pasta “masks”, ela 
deverá contr os arquivos de interface da aplicação (masks). Em termos de organização e 
entendimento da estrutura é adequada a criação da subpasta masks.
Experimente criar este pequeno exemplo com e sem a pasta masks. Nela apenas ficará o arquivo 
mensagem.php. Dica: instale a extensão “Web develop” no Firefox e sempre que houver algum 
erro, corrija o erro e clique em Cookies – Clear Session Cookies e só então clique no botão Refresh 
do browser.
Se no Internet Explorer, feche e abra o browser novamente após qualquer alteração, ou faça alguma 
configuração correspondento a da extensão do FF.
Segundo Exemplo – Acessando Banco de Dados
Este exemplo usa um banco de nome “p4a”, com o SGBD PostgreSQL. Teremos apenas uma 
tabela, funcionarios, com a estrutura abaixo:
CREATE TABLE funcionarios (
 codigo integer NOT NULL,
 nome character varying(40),
 siape character varying(10),
 foto text,
 observacao text,
 primary key (codigo)
);
A estrutura do aplicativo será:
<funcionarios>
 index.php
 <objects>
 cadastro.php
 funcionarios.php
 <uploads> (Com permissão de escrita - 777>
 <tmp> (Com permissão de escrita - 777>
Arquivos:
index.php
<?php
// Ampliar retornos de erro do P4A
define("P4A_EXTENDED_ERRORS", 'TRUE');
// Define locales para pt_BR. Muito útil para o usuário este recurso, já que 
campos:
// numéricos receberão a máscara 1.234,56 e campos data
// 25/12/2005 além de outras facilidades
define("P4A_LOCALE", 'pt_BR');
// Define dados da conexão ao banco
define("P4A_DSN", 'pgsql://postgres:suasenha@127.0.0.1:5432/p4a');
//define("P4A_DSN", 'mysql://root:@127.0.0.1/p4a');
http://pt.wikibooks.org/wiki/Aplicativos_em_PHP
Aplicativos em PHP (WikiBooks - democratizando o conhecimento) - Página 254/475
//Incluir lib P4A
require_once( dirname(__FILE__) . '/../../p4a.php' );
/*
Now we instance the application with the singleton
method, than we call the "main" method. main is executed
every page call (click and reload included).
The application must be a class under the "objects" directory
and have to extend "p4a" class.
Attention, in p4a all object have to be assigned using the "=&"
operator or you will loose all references. You also have to
use the "&" operator