Escolar Documentos
Profissional Documentos
Cultura Documentos
Edio n1 - 2007
ROSEMARY FRANCISCO
Apoio
Gesto e Execuo
Contedo e Tecnologia
Apresentao
primeira, so apresentados os conceitos fundamentais do banco de dados, que proporcionar um primeiro contato com essa tecnologia. Tambm na primeira parte, demonstrado o funcionamento do Modelo Relacional, que a base para a tecnologia de
banco de dados. A segunda parte engloba as tcnicas para a definio de um projeto
de banco de dados: normalizao, modelagem e as dependncias funcionais e, ainda,
uma anlise mais ampla sobre o funcionamento e os recursos disponibilizados pelos
Sistemas Gerenciadores de Banco de Dados.
Lembre-se de que a sua passagem por esta disciplina ser tambm acompa-
nhada pelo Sistema de Ensino Tupy Virtual, seja por correio postal, fax, telefone, email ou Ambiente Virtual de Aprendizagem. Sempre entre em contato conosco quando
surgir alguma dvida ou dificuldade.
Toda a equipe ter a maior alegria em atend-lo, pois a sua aquisio de co-
SUMRIO
Carta da Professora
O conhecimento como um jardim: se no for cultivado, no pode
ser colhido. (Provrbio Africano)
Caro(a) aluno(a),
Sendo assim, convido voc para, juntos, agora virtualmente, vencer este novo
desafio!
Professora Rosemary Francisco
Cronograma de Estudos
Carga Horria
2
2
2
2
2
3
3
2
2
4
4
2
2
1
2
1
2
2
Unidade
Data/Avaliao
Viso geral do gerenciamento
_/_ a _/_
de bancos de dados
Arquitetura de sistemas de ban_/_ a _/_
cos de dados
Introduo aos bancos de da_/_ a _/_
dos relacionais
Uma introduo SQL
_/_ a _/_
Introduo ao Modelo Relacio_/_ a _/_
nal
lgebra Relacional
_/_ a _/_
Clculo relacional
_/_ a _/_
Integridade
_/_ a _/_
Dependncias funcionais
_/_ a _/_
Normalizao
_/_ a _/_
Modelagem semntica
_/_ a _/_
Tabelas
_/_ a _/_
ndices
_/_ a _/_
Consultas de Seleo
_/_ a _/_
Consultas de Ao
_/_ a _/_
Vises Views
_/_ a _/_
Procedimentos Armazenados
_/_ a _/_
Store Procedures
Disparadores Triggers
_/_ a _/_
Plano de Estudos
Ementa
delos de SGBD. Criao de um banco de dados. Projetando e criando tabelas. Gerenciamento do banco de dados. Consultando o banco de dados. Criando relatrios. Otimizao do banco de dados e segurana do banco de dados. SQL. Banco de dados
distribudos. Principais produtos SGBD do mercado. Banco de dados e o paradigma
de objetos.
Objetivos da Disciplina
Geral
Compreender os sistemas de bancos de dados.
Especficos
- Introduzir os conceitos fundamentais dos sistemas de bancos de dados.
- Relacionar o funcionamento do Modelo Relacional e os objetos que compem o Modelo Relacional.
- Demonstrar as melhores prticas para normalizao e modelagem dos dados em um Projeto de Banco de Dados.
- Ampliar os conhecimentos e a aplicao da linguagem de banco de dados
SQL
- Ampliar os conhecimentos sobre o funcionamento e os recursos disponveis
pelos Sistemas Gerenciadores de Banco de Dados.
Aula 1
Contedos da Aula
O que PHP?;
Exerccios propostos.
Como j sabemos, a Internet uma rede que surgiu com o intuito principal
Stats, estima-se que a Internet usada por 18% da populao mundial (em torno
de 1,1 bilho de pessoas). Este acesso vem aumentando gradativamente, em Maro/2007 essa mesma pesquisa foi realizada e as estatsticas apontaram que 16,9%
da populao tinham acesso Internet. Isso significa que apenas em um ms tivemos
um aumento de 1,1% de acessos, um aumento realmente considervel analisando as
devidas propores (bilhes de pessoas).
Para permitir que os usurios da rede interajam dessa forma, necessrio que
a mquina cliente, que pode ser entendida como o computador dos usurios acessando a Internet. A mquina cliente faz uma requisio de servio por meio do protocolo
http protocolo que nos permite visualizar os servios disponveis na Internet - para
um servidor. Devemos lembrar que a conexo entre a mquina cliente e o servidor
pode ser feita por meio da Internet (quando se trata de um servio disponvel na Internet), ou ento por meio de uma rede interna (no caso das empresas que disponibilizam aplicaes cliente-servidor dentro da sua estrutura organizacional).
Veremos mais adiante, neste mesmo captulo, como deve ser o ambiente para
trabalharmos com PHP. Porm por meio da figura 1, j podemos verificar que ser
necessrio um interpretador da linguagem PHP para retornar ao usurio da aplicao
o resultado final esperado.
10
durante a fase de repercusso das redes de computadores e da arquitetura clienteservidor. As empresas fornecedoras de linguagens de programao e tambm os especialistas em servios para Internet identificaram a demanda e assim comearam a
nascer as linguagens voltadas para o desenvolvimento de aplicaes cada vez mais
dinmicas para a Internet.
1.1 O QUE PHP?
PHP pode ser traduzido para: PHP Hipertext Preprocessor e uma lingua-
A linguagem PHP uma linguagem Open Source, ou seja, pode ser utilizada
guagem seja cada vez mais popular entre os desenvolvedores de aplicaes para a
Internet.
1.2 COMO SURGIU?
A linguagem PHP foi criada em 1994 por Ramus Lerdorf. Nessa poca, a idia
11
Fique sabendo
Uma comunidade Open Source uma comunidade de desenvolvedores que
desenvolvem e disponibilizam aplicaes e outros recursos que auxiliam no processo de desenvolvimento. Todos os recursos e aplicaes disponibilizados por
esse tipo de comunidade so livres de licena de uso.
as diversas comunidades livres e seus usurios e, nessa poca, a origem do interpretador e suas atualizaes ficaram sob a responsabilidade da comunidade livre da
linguagem PHP, que at hoje responsvel pelas correes e atualizaes da linguagem.
foram desenvolvidas com ela. a linguagem favorita dos acadmicos e desenvolvedores que utilizam a plataforma Linux.
para o prximo ano, em 2008, o lanamento da verso 6, que j possui algumas distribuies na fase beta fase de testes.
1.3 VANTAGENS DA LINGUAGEM PHP
12
A linguagem tem suporte e integrao com os bancos de dados mais populares como MySQL, SQL Server, Oracle, DB2, entre outros;
Permite o desenvolvimento de aplicaes dinmicas com recursos como: envio de e-mails, autenticao de usurios, contedo dinmico entre outros.
guagem PHP a preparao do ambiente de desenvolvimento. Para isso, certifiquese de que voc tem os requisitos mnimos e o ambiente do PHP instalado em seu
computador.
responsvel pelo armazenamento e publicao das pginas, e o interpretador da linguagem PHP. O servidor WEB mais utilizado pelos desenvolvedores PHP o Apache, que um servidor gratuito, mas o PHP tambm pode ser configurado em outros
servidores WEB como o famoso IIS da Microsoft. Alm disso, o ambiente de desenvolvimento pode tambm ser composto de um gerenciador de banco de dados para
o armazenamento dos dados da aplicao dinmica. O banco de dados MySQL o
favorito para o desenvolvimento de aplicaes para Internet com PHP.
Para instalar o Vertrigo, voc pode fazer o download atravs do site http://ver-
13
do Vertrigo por meio do menu Iniciar >> Programas >> VertrigoServ. Ser aberta a
janela do Vertrigo com as informaes das ferramentas que foram instaladas e configuradas em seu computador. Para inicializar o servidor, basta clicar no boto: Hide
this window and start server que significa: Esconda essa janela e inicie o servidor.
A figura 2 ilustra a janela do VertrigoServ.
status do Windows, ao lado do relgio. Esse cone estar sempre visvel enquanto o
servio do Vertrigo estiver ativo.
Finalmente, para validarmos que est tudo certo com o Apache servidor WEB
14
a tela do VertrigoServ.
clique no link: View phpinfo screen, disponvel no item: Tools and Links. Aps
clicar no link citado, ser mostrada uma tela com as informaes do interpretador do
PHP: verso e bibliotecas instaladas. A figura 4 ilustra a tela com as informaes do
PHP.
15
to, precisamos escolher um editor de comandos para podermos dar incio ao conhecimento e aprendizagem da linguagem PHP.
res de PHP uma boa produtividade, porm muitos desses editores no possuem uma
verso gratuita para uso. importante ressaltar aqui, que voc pode trabalhar com a
linguagem PHP utilizando at um bloco de notas, contudo, como j informamos anteriormente, um editor PHP ir agilizar e melhorar a produtividade durante o desenvolvimento.
portugus e uma ferramenta gratuita. Para obter a verso do PHP Editor, entre no
site: http://paginas.terra.com.br/informatica/php_editor/download.html e clique
no link: Mirror 2 para fazer o download do arquivo. Aps o download do arquivo,
clique duas vezes em cima do arquivo executvel para fazer a instalao que bem
simples, basta seguir as instrues da instalao. As figuras 5 a 8 ilustram o processo
de instalao do PHP Editor.
Aps clicar no arquivo de instalao do PHP Editor, ser exibida a primeira tela com
instrues para a instalao. Para prosseguir com a instalao, clique no boto avanar.
16
PHP Editor, geralmente o diretrio: C:\Arquivos de Programas\PHP Editor. Selecione o diretrio onde dever ser feita a instalao por meio do boto: Procurar, ou
deixe o caminho sugerido pelo instalador e clique no boto: Instalar para prosseguir
a instalao.
17
18
Sntese
Exerccios propostos
1) Complete a frase abaixo com uma das alternativas, a ordem das palavras deve
corresponder lgica da frase.
A linguagem PHP possui um .... responsvel pela transformao das pginas ....
em pginas .... . Essas pginas .... so as pginas que o .... ir disponibilizar ao
....
a. Servidor Web, HTML, PHP, PHP, Usurio, Interpretador
b. Servidor Web, PHP, HTML, PHP, Interpretador, Usurio
c. Interpretador, PHP, HTML, HTML, Servidor WEB, Usurio
d. Interpretador, HTML, PHP, PHP, Servidor WEB, Usurio
2) Selecione a alternativa incorreta. O PHP pode ser definido como:
a. Uma linguagem de programao para Internet
b. Uma linguagem Open Source
c. Uma linguagem interpretada
19
Aula 2
Caro aluno(a)!
Nesta segunda aula voc ir aprender a sintaxe bsica
da linguagem PHP e tambm vai desenvolver o primeiro exemplo com a linguagem. Aps o desenvolvimento desse
exemplo, ser mostrado como testar o exemplo no ambiente de
desenvolvimento configurado.
Bom estudo!
Objetivos da Aula
Contedos da Aula
Exerccios propostos
20
21
ra:
Interface com o usurio aparncia da aplicao representada pela parte
HTML com imagens e textos estticos e/ou dinmicos;
Scripts com instrues em PHP representando a lgica de negcio da aplicao;
Integrao com banco de dados representando os dados dinmicos que
sero disponibilizados na aplicao.
<?php
//instrues PHP;
?>
22
ou
<?
//instrues PHP;
?>
vendo com PHP. Sempre que incluirmos alguma instruo PHP, necessrio incluir a
instruo dentro do bloco de delimitadores.
Como vimos, podemos utilizar arquivos / pginas em PHP para montar a in-
terface / leiaute da aplicao. Esse leiaute, muitas vezes, criado com o auxlio da
linguagem HTML que permite a insero de estilos de fontes diferentes, imagens e
outros componentes interativos.
Contedo da pgina:
<html>
<body>
</body>
</html>
23
separador das instrues. Cada instruo definida em uma pgina em PHP deve ser
finalizada com um ponto e vrgula ;.
ele identifica o final de uma instruo, interpreta a instruo e, caso tenha sucesso, ir
disponibilizando o resultado parcialmente. Isso significa que a pgina HTML, resultante do processo de interpretao, ser montada aos poucos, conforme a finalizao da
interpretao das instrues. Esse processo, muitas vezes, transparente aos olhos
do usurio, sendo possvel sua identificao somente quando h lentido na montagem da pgina HTML. A lentido pode ser causada por uma srie de fatores como:
problema na rede, problema no computador ou ainda problema na instruo PHP
definida.
1.3 Nomes de variveis
quanto para aplicaes diversas, a linguagem PHP possui uma caracterstica especfica para declarao de nomes de variveis. Ao declarar um nome para uma varivel,
necessrio incluir o smbolo: $ antes da varivel. Esse smbolo ir identificar que o
nome a seguir uma varivel. O interpretador PHP somente reconhecer uma varivel se a mesma iniciar com o smbolo $.
ve, ou seja, ele faz distino entre maisculas e minsculas. Veja no exemplo abaixo
a utilizao de variveis:
<?
$nome = Jos;
print Ol . $nome; // vai mostrar Jos
print <br>;
print Ol . $NOME; // no vai mostrar nada
?>
SOCIESC - Sociedade Educacional de Santa Catarina
24
1.4 Comentrios
vimento das aplicaes, por meio deles teremos como compreender o que faz uma
determinada instruo ou bloco de instrues. Assim, quando for necessrio executar
alguma manuteno na instruo, ser possvel faz-la de forma mais rpida.
Comentrios de linha = //
rio rpido, que ocupe apenas uma linha. J os comentrios de bloco so utilizados
quando o comentrio a ser feito possui mais de uma linha de texto. Veja o exemplo:
<?
//esse um comentrio de linha, fica apenas no cdigo
print Essa frase est abaixo do comentrio de linha;
//mais um comentrio de linha, a linha abaixo utilizada o
comando <BR> do //HTML, para pular duas linhas entre as
frases que sero mostradas na tela
print <br><br>;
/*
Esse um comentrio de bloco.
Pode ter mais de uma linha de comentrio, porm assim como
o comentrio de linha, tambm somente fica no cdigo e nunca ser interpretado e mostrado na pgina final em HTML
para o usurio.
*/
print Essa frase ser mostrada duas linhas abaixo da primeira frase e abaixo do comentrio de bloco;
?>
25
Como j vimos nos exemplos anteriores, utilizamos o comando: print para im-
primir o resultado das instrues na tela do navegador. Em PHP existem dois comandos que permitem imprimir textos e cdigos na tela:
echo
de distino entre eles, portanto, em seus cdigos, voc poder utilizar o comando
que lhe parece mais agradvel. No prximo tpico criaremos e testaremos o primeiro
exemplo e ficar mais clara a funo do comando de impresso na tela.
2 DESENVOLVENDO O PRIMEIRO EXEMPLO COM PHP
primeiro exemplo utilizando o PHP Editor para criar uma pgina em PHP e o ambiente
de desenvolvimento do Vertrigo para testar o funcionamento da pgina criada.
os arquivos dentro do servidor WEB Apache, instalado pelo VertrigoServ. Dessa forma, todos os arquivos de exemplo devero estar dentro de um diretrio chamado:
www que est dentro do diretrio de Instalao do VertrigoServ. Se voc optou pelo
26
caminho padro de instalao para VertrigoServ no momento da instalao, o diretrio www estar disponvel em C:\Arquivos de Programas\VertrigoServ\www. Se
voc optou por outro caminho de instalao, procure o caminho que voc informou no
momento da instalao e procure pelo diretrio: www.
Aps encontrar o diretrio: www, crie um novo diretrio dentro dele chamado:
Com o diretrio criado, vamos agora abrir o PHP Editor para criar nosso primei-
que possuir a instruo do primeiro exemplo. Crie um novo arquivo clicando no cone de criao de arquivo ou acessando o menu: Arquivo >> Novo. O PHP Editor ir
questionar qual o tipo de arquivo que voc deseja criar, selecione o tipo de arquivo:
27
/PHP e clique no boto: OK. A figura 10 ilustra a janela com as opes de arquivos
que podem ser criados.
PHP: <? e ?>. Os demais comandos que aparecem no arquivo so comandos HTML
28
utilizados para a formatao da pgina HTML final, criada pelo interpretador PHP, ao
final da interpretao de todas as instrues PHP contidas no arquivo.
da pgina PHP que aparece na barra azul do navegador de Internet. Assim, vamos
alterar o texto: Documento PHP, que est dentro do comando HTML, para Primeiro
Exemplo em PHP. Isso far com que o texto informado seja mostrado como ttulo da
pgina no navegador.
Arquivo >> Salvar. Salve o arquivo com o nome: exemplo4.php. A figura 12 ilustra
como ficar o cdigo arquivo exemplo4.php.
29
30
Sntese
31
Exerccios propostos
1) Qual das alternativas abaixo no faz parte da estrutura bsica de uma aplicao desenvolvida com PHP:
a. Interface com usurio
b. Pgina com instrues PHP
c. Interface com o banco de dados
d. Integrao com banco de dados
2) Para utilizar uma instruo PHP em uma pgina, necessrio (apenas uma
alternativa est correta):
a. Utilizar os delimitadores PHP representados pelos caracteres: <? E ?>
b. Declarar uma varivel
c. Utilizar comandos HTML
d. Montar a instruo PHP no corpo da pgina HTML
3) Todas as instrues PHP devem ser finalizadas com (apenas uma alternativa
est correta):
a. Ponto (.)
b. Ponto e vrgula (;)
c. Vrgula (,)
d. Todas as alternativas esto incorretas
4) Ao declarar uma varivel importante observar ( permitida mltipla escolha):
a. Se o smbolo $ foi utilizado no incio do nome da varivel
b. Se foi declarado o tipo de dados da varivel
c. Se a varivel est com letras maisculas e minsculas por causa do case-sensitive
d. O tipo de valor que a varivel est recebendo
32
Aula 3
Caro aluno(a)!
Nesta aula voc estudar sobre os tipos de dados suportados pela linguagem PHP. Mostraremos como utilizar os tipos de dados, como transformar uma varivel que possui
um tipo de dado para outro tipo de dados e vamos tambm testar
alguns exemplos utilizando os tipos de dados vistos.
Boa aula!
Objetivos da Aula
Contedos da Aula
Exerccios propostos.
33
34
A linguagem PHP consegue fazer a distino entre os tipos de dados, por meio
do conceito: tipagem automtica, utilizada pelo interpretador PHP. Mas o que a tipagem automtica?
qual o valor que est sendo atribudo a uma varivel e setar o tipo de dados desta
varivel de acordo com o tipo de dados do valor atribudo varivel. Veja o exemplo
abaixo:
<?
//A varivel est recebendo um valor inteiro:
$numero1 = 10;
//A segunda varivel est recebendo um valor com casas decimais:
$numero2 = 10.5;
//Vamos imprimir o valor das duas variveis e testar:
print $numero1;
print - ;
print $numero2;
?>
35
variveis foram impressos corretamente na tela. At aqui tudo certo, mas como podemos validar que a varivel: $numero1 est atribuda com o tipo de dados: inteiro e a
varivel: $numero2 est atribuda com o tipo de dado: nmero com casas decimais?
Veremos nos prximos captulos da apostila que a linguagem PHP fornece uma srie
de funes que permitem verificar e executar aes diversas. Nesse exemplo, portanto, para verificarmos o tipo de dado de uma varivel, poderemos utilizar uma funo
que o PHP disponibiliza e que mostra qual o tipo de dado de uma varivel. A funo
que utilizaremos para isso a funo: gettype(nome_variavel). Essa funo ir
retornar o tipo de dado de uma varivel.
36
sumiu o tipo de dado: integer que suporta nmeros inteiros e, a varivel $numero2
assumiu o tipo de dado: double que suporta nmeros com casas decimais.
qual o tipo de dado que ela dever assumir, o interpretador do PHP ir selecion-lo
automaticamente, de acordo com o tipo de dado do valor da varivel. Vamos verificar
agora quais so os tipos de dados que a linguagem PHP fornece para o desenvolvimento de aplicaes.
Nmeros inteiros
Textos
Booleanos
Array
Objeto
37
{..., -2, -1, 0, 1, 2, ...}. Os nmeros inteiros podem ser utilizados em decimal (base 10),
hexadecimal (base 16) ou octal (base 8), ou ainda como um nmero inteiro positivo ou
negativo. Veja no exemplo abaixo a forma de aplicao dos inteiros:
<?
$inteiro1 = 1234; // nmero decimal
$inteiro2 = -123; // um nmero negativo
$inteiro3 = 0123; // nmero octal (equivalente a 83 em decimal)
$inteiro4 = 0x1A; // nmero hexadecimal (equivalente a 26
em decimal)
?>
nmeros inteiros octal devem sempre iniciar com o valor: 0. Esses valores, no incio,
so os responsveis pela interpretao correta do formato da varivel inteiro pelo interpretador PHP.
O tipo de dados que suporta nmeros inteiros em PHP chamado de: inte-
ger.
1.2 Nmeros com casas decimais
O tipo de dado que suporta nmeros com casas decimais em PHP chamado
de: double. Esse tipo de dado permite uma preciso de at 14 decimais. Os nmeros
com casas decimais podem ser especificados da seguinte forma:
<?
$numero1 = 1.234;
$numero2 = 23e4; // representa o nmero 230.000
?>
SOCIESC - Sociedade Educacional de Santa Catarina
38
1.3 Textos
O tipo de dado que suporta textos em PHP chamado de: string. Para atribuir
valores do tipo texto em uma varivel PHP pode-se utilizar tanto aspas duplas quanto
aspas simples. Existe, porm, uma diferena na interpretao dos valores das variveis dependendo do tipo de aspas utilizado. As diferenas so:
Atribuindo valores s variveis do tipo: string com aspas simples:
O valor da varivel ser exatamente o texto que est entre as aspas
simples.
Atribuindo valores s variveis do tipo: string com aspas duplas:
O valor da varivel poder conter outra varivel entre as aspas duplas
ou ainda, caracteres de escape que permitem a formatao dos dados.
informado ;
print $texto1;
//vamos utilizar o comando <br> do HTML para pular uma
linha
print <br>;
/* atribuindo texto com aspas duplas, vai interpretar o
caracter de escape \n
*/
39
aspas simples mostra o texto como foi escrito. O caracter de escape: \n completamente ignorado. J utilizando a atribuio com aspas duplas, o caracter de escape
interpretado, portanto, no mostrado como um texto na tela.
Os caracteres de escape mais utilizados em PHP so:
Sintaxe
Significado
\n
Nova linha
\r
\t
Tabulao horizontal
\\
A prpria barra ( \ )
\$
O smbolo $
Aspa simples
Aspa dupla
A resposta correta para essa questo : por causa do HTML. A linguagem HTML
car que a quebra de linha foi feita corretamente. Inclusive, se analisarmos a ltima
linha do exemplo, a varivel $texto2 foi includa dentro do comando <pre></pre>
40
e tambm dentro das aspas duplas. O texto que estava dentro da varivel $texto2
foi mostrado corretamente. Isso acontece porque o interpretador PHP consegue interpretar uma varivel mesmo que esteja dentro de um texto com aspas duplas. J
com aspas simples isso no seria possvel. Vamos validar essa informao tentando
executar a ltima instruo de comando do nosso exemplo trocando as aspas duplas
por aspas simples:
<?
//verificar a impresso na tela com aspas simples
print <pre>$texto2</pre>;
?>
O dado boolean o tipo mais simples que existe no PHP. um tipo de dado co-
mum na maioria das linguagens de programao, pois recebe somente dois valores:
41
1. Verdadeiro = True ou 1
2. Falso = False ou 0
Esse tipo de dado muito utilizado para validaes do resultado de outras ins-
Existem duas maneiras de criar uma varivel do tipo array, veja o exemplo.
<?
//forma 1 - criando um array e setando o valor do array
$array1[1] = Posio 1 do array1;
$array1[2] = Posio 2 do array1;
$array1[3] = Posio 3 do array1;
//imprimindo os dados do array1
print $array1[1] -
$array1[2] -
$array1[3] <BR>;
$array2[2] -
$array2[3] <BR>;
?>
42
Veja o exemplo.
<?
//criando array com chave de posio do tipo texto
$arrayTexto[Nome] = Jos Aparecido;
$arrayTexto[Idade] = 22;
//imprimindo os dados do arrayTexto
print $arrayTexto[Nome];
print <br>;
print $arrayTexto[Idade];
?>
atribuir qualquer tipo de dado suportado pelo PHP para a posio de uma varivel do
tipo: array. Trabalharemos mais com arrays nos prximos captulos do nosso livro-texto.
1.6 Objeto
Objetos. A partir dessa verso todos os conceitos utilizados pela Orientao a Objetos
podem ser utilizados em uma aplicao desenvolvida em PHP. Na verso 5 porm,
esses conceitos foram reforados e melhorados na linguagem e ficou mais fcil desenvolver aplicaes utilizando os paradigmas da Orientao a Objetos.
dado de uma varivel, pode acontecer que o tipo de dado indicado no seja o mais
43
exemplo de coero utilizado quando uma varivel recebe o resultado de uma operao matemtica entre dois nmeros, sendo um nmero inteiro e outro nmero com
casas decimais. A varivel que receber o valor ter seu tipo de dados alterado para
nmeros com casas decimais ou o tipo de dado: double. Veja o exemplo.
<?
// exemplo de coero
$inteiro = 1;
$real = 2.5;
print
tipo
de
dados
da
varivel
$inteiro
gettype($inteiro) . <br>;
print tipo de dados da varivel $real = . gettype($real)
. <br>;
$resultado = $inteiro;
print valor da varivel resultado = $resultado <br>;
print
tipo
de
dados
da
varivel
resultado
gettype($resultado) . <br>;
// gerando a coero do tipo de dado da varivel resultado
com a operao //matemtica de soma
$resultado = $inteiro+$real;
SOCIESC - Sociedade Educacional de Santa Catarina
44
tipo
de
dado
da
varivel
resultado
gettype($resultado) . <br>;
?>
derada a mais bsica de transformao de tipos de dado das variveis. Para utiliz-lo
precisamos dos cast, conversores de um tipo de dado para outro tipo de dado.
Veja o exemplo.
<?
// exemplo utilizando cast
$numero = 1;
45
Essa forma tambm pode ser utilizada pelos desenvolvedores, basta que a
46
o tipo de dado inteiro integer utilizando a funo settype. H vrias funes disponveis na linguagem PHP e, durante o curso, utilizaremos vrias dessas funes.
Porm, para visualizar todas as funes disponveis na linguagem, voc deve consultar o Manual PHP disponvel na instalao do PHP Editor. Para acessar o manual v
at o menu: Iniciar >> Programas >> PHP Editor e selecione o item Manual PHP.
47
Sntese
Exerccios propostos
1) Selecione a alternativa incorreta. A linguagem PHP suporta os seguintes tipos
de dados:
a. Nmeros
b. Textos
c. Datas
d. Lista de Valores
2) O tipo de dado que permite duas formas de atribuio o (apenas uma alternativa est correta):
a. Integer
b. Double
c. Boolean
d. String
3) O tipo de dado da varivel abaixo ser (apenas uma alternativa est correta):
$numero = 1;
a. Integer
b. Boolean
48
c. String
d. Double
4) Para utilizar caracteres de escape na impresso de instrues em PHP necessrio (apenas uma alternativa est correta):
a. Utilizar o comando HTML <br>
b. Utilizar o comando HTML <b></b>
c. Utilizar o comando HTML <pre></pre>
d. Todas as alternativas esto incorretas
5) A instruo abaixo ir (apenas uma alternativa correta):
$numero = (double) 1;
a. Transformar a varivel para String
b. Transformar a varivel para Double
c. Transformar a varivel para Integer
d. Transformar a varivel para Boolean
Aula 4
Contedos da Aula
Exerccios propostos.
49
50
declarar as variveis com um tipo de dado especfico, pois o interpretador PHP utiliza
a tipagem automtica para atribuir um tipo de dado a uma varivel. Dessa forma, podemos inicializar uma varivel somente quando realmente necessitamos dela em um
procedimento da aplicao que estamos desenvolvendo.
PHP -, o nome da varivel dever sempre possuir o smbolo: $ no incio. justamente esse smbolo que indica ao interpretador PHP que uma varivel est sendo
declarada do smbolo at o ponto e vrgula que ir encerrar a instruo de declarao
da varivel.
tipos de variveis que podem ser utilizadas. Em geral, so criadas pelo servidor WEB
e o interpretador PHP para auxiliar nos procedimentos da aplicao. As variveis aqui
conceituadas como bsicas so todas aquelas utilizadas nos exemplos criados at
agora no curso. A partir de agora conheceremos outros tipos de variveis que poderemos utilizar em nossos exemplos e posteriores aplicaes.
1.1 Variveis enviadas pelo navegador
Quando utilizamos pginas PHP e HTML para fazer interao entre o usurio e
51
a seguir. Neste exemplo criaremos um formulrio HTML em uma pgina PHP para
passar um valor por meio de uma varivel e depois imprimir o valor da varivel na tela.
Utilizaremos o mesmo teste para variveis do tipo POST e GET. Vamos ao exemplo.
Pgina1: exemplo11_form.php
<HTML>
<HEAD>
<TITLE>Exemplo 11 - Form</TITLE>
</HEAD>
<BODY>
<form name=form1 action=exemplo11.php method=post>
Nome: <input type=text name=nome><br>
<input type=submit name=btnEnviar value=Enviar
valor>
</form>
</BODY>
</HTML>
Pgina 2: exemplo11.php
<HTML>
<HEAD>
<TITLE>Exemplo 11</TITLE>
</HEAD>
<BODY>
<?
$nome = $_POST[nome];
print O nome informado : $nome <br>;
?>
</BODY>
</HTML>
52
apenas um formulrio HTML com um nico campo texto chamado: nome. O valor informado nesse campo texto ser enviado para a pgina: exemplo11.php, aps clicar
no boto: Enviar Valor. O comando que informa para onde ser enviado o valor, est
definido no comando: action=exemplo11.php do comando <form></form>
do formulrio HTML. O tipo de varivel a ser enviado para a pgina definido no comando: method=post do comando <form></form> do formulrio HTML. Nesse
exemplo, ento, enviaremos o valor por meio de uma varivel do tipo POST. Porm,
se o desenvolvedor desejar enviar o valor por meio de uma varivel do tipo GET, utilizando esse mesmo formulrio, poder faz-lo trocando o texto post por get.
Ao executar o exemplo acima, veremos que, aps clicar no boto: Enviar valor,
Para isso, altere o method=post do formulrio para method=get. Execute novamente o teste. Qual foi o resultado?
Nesse caso, no foi mostrado o valor informado, certo? Isso mesmo, porque a
varivel agora est indo por meio do tipo: GET. Verifique agora a barra de endereos
do navegador da internet, ele dever mostrar o seguinte comando:
http://localhost/apostila_php/exemplo11.php?nome=12&btnEnviar=Enviar+valor
Por que est mostrando os dados com o tipo: GET e com o tipo: POST?
Porque o tipo de varivel GET envia os valores por meio do endereo do nave-
gador.
exemplo11.php?
53
o nome ser mostrado corretamente na pgina exemplo11.php. Faa o teste novamente e valide essa informao.
de aplicaes que fazem interao com usurios, porm h duas diferenas muito importantes entre os dois tipos de variveis e que devem ser levadas em considerao
na anlise de qual tipo de varivel utilizar:
1. Os tipos de varivel GET so enviados pelo endereo do navegador e por
isso todos os dados ficam expostos na barra de endereos. Assim evite utilizar
esse tipo de varivel quando houver dados sigilosos envolvidos.
2. A barra de endereo do navegador possui limitao de tamanho, mximo
255 caracteres, portanto, os valores dos tipos de varivel GET no podero
ultrapassar esse tamanho. Se ultrapassar, os dados no sero enviados por
completo, sero enviados somente os dados at o tamanho limite estabelecido
pelo navegador.
para formulrios em HTML o tipo: POST. O GET poder ser utilizado em outros procedimentos da aplicao. Veremos mais detalhes sobre esses dois tipos de variveis
no decorrer do curso.
1.2 Variveis de ambiente
54
controle da sesso do usurio. Esse tipo de varivel comumente utilizado em aplicaes que possuem autenticao de usurio.
truo: $_SESSION[nome_da_variavel].
Controle de Sesso.
2 FUNES PHP PARA TRABALHAR COM VARIVEIS
55
Toda vez que criamos uma varivel, cria-se um espao em memria para ser
utilizado pela aplicao. Dessa forma, quando trabalhamos com vrias variveis em
uma aplicao, todas estaro consumindo espao em memria.
linguagem do computador, desalocarmos a varivel da memria quando j no precisamos dela. A funo que permite desalocar uma varivel da memria : unset(nome_
variavel).
56
varivel sero perdidos. Assim, somente utilize essa funo quando tiver certeza que
a varivel no ser mais utilizada por algum procedimento dentro da aplicao.
2.3 Funes que verificam se uma varivel possui valor
isset(nome_da_variavel)
empty(nome_da_variavel)
Como na maioria das funes PHP, o retorno dessas duas funes tambm
booleano.
57
Constantes podem ser definidas como uma varivel que possui um valor cons-
tante, ou seja, o valor ser definido uma nica vez e jamais ser alterado durante a
execuo da aplicao. Essa a principal diferena entre uma constante e uma varivel. Como o prprio nome indica, as constantes possuem valores que jamais sero
alterados por algum procedimento dentro da aplicao. J as variveis podem ter o
seu valor alterado, dependendo do tipo de ao que for executado pela aplicao.
da_constante,valor_da_constante).
Veja o exemplo que mostra como definir e utilizar uma constante dentro das
pginas PHP:
Pgina: exemplo14.php
<HTML>
<HEAD>
<TITLE>Exemplo 14</TITLE>
</HEAD>
<BODY>
<?
// definir a constante taxa de juros
define(taxaJuros,0.5);
// imprime o valor da constante na tela
print taxa de Juros = . taxaJuros;
print <br>;
// utiliza a constante para um clculo
$valor = 100.00*taxaJuros;
// imprime o resultado do clculo com a constante
print valor = . $valor;
?>
</BODY>
</HTML>
58
59
Sntese
Exerccios propostos
1) Os tipos de variveis mais utilizados no desenvolvimento de aplicaes com
PHP so ( permitida mltipla escolha):
a. Sesso
b. Enviadas pelo Navegador
c. Ambiente
d. Memria
2) Complete a frase abaixo com uma das alternativas:
As variveis que utilizam a barra de endereos do navegador a ....
a. Sesso
b. Post
c. Get
d. Servidor
3) O tipo de varivel que possui os dados da configurao do PHP (apenas
uma alternativa correta):
a. Ambiente
60
b. Post
c. Sesso
d. Servidor
4) A funo que verifica se a varivel est setada e com o valor vazio a (apenas
uma alternativa correta):
a. is_string
b. unset
c. empty
d. isset
5) A principal diferena entre uma varivel e uma constante (apenas uma alternativa correta):
a. A constante somente aceita um tipo de dado
b. A constante tem limitao de valor
c. O valor da constante no muda nunca na aplicao
d. A constante no pode ser utilizada em algumas instrues
Aula 5
Caro aluno(a)!
Nesta quinta aula voc conhecer os tipos de operadores disponveis na linguagem PHP e a diferena entre
eles. Alm disso, analisaremos o que uma expresso condicional
e quando podemos utiliz-las dentro de nossas aplicaes. Por fim,
realizaremos alguns testes para identificar melhor a funcionalidade
dos operadores e tambm da expresso condicional.
Bons Estudos!
Objetivos da Aula
Contedos da Aula
Exerccios Propostos.
61
62
matemticas. Esses operadores somente podero ser utilizados entre variveis com
os tipos de dados nmeros inteiros e/ou nmeros com casas decimais nmeros reais.
adio
subtrao
multiplicao
diviso
mdulo
PHP:
Pgina: exemplo15.php
<HTML>
<HEAD>
<TITLE>Exemplo 15</TITLE>
</HEAD>
<BODY>
<?
63
$numero1 = 10;
$numero2 = 3;
print <br>;
print <br><br>;
print <br>;
print <br>;
print <br>;
print <br>;
print <br>;
?>
</BODY>
</HTML>
64
mite a concatenao entre variveis do tipo string. Concatenar duas variveis do tipo
string significa juntar o valor das duas variveis.
o em PHP.
.
concatenao
operador de concatenao para unir textos com variveis. O exemplo abaixo mostra
a concatenao entre duas variveis do tipo texto:
Pgina: exemplo16.php
<HTML>
<HEAD>
<TITLE>Exemplo 16</TITLE>
</HEAD>
<BODY>
<?
?>
</BODY>
</HTML>
65
A atribuio feita sempre por valor, e no por referncia. Isso significa que a
atribuio simples
+=
-=
*=
/=
%=
.=
Pgina: exemplo17.php
<HTML>
<HEAD>
<TITLE>Exemplo 17</TITLE>
</HEAD>
<BODY>
<?
$numero = 5;
66
$texto .= $numero;
print $texto;
print <BR>;
$numero += 2;
print $numero;
?>
</BODY>
</HTML>
a seguir.
!
no (inverso)
&&
e lgico
||
ou lgico
estudo de caso, muitas vezes utilizanremos os operadores lgicos para validar valores de variveis e condies.
1.5 Operadores de Comparao
67
igual a
!=
diferente de
<
menor que
>
maior que
<=
menor ou igual a
>=
maior ou igual a
Incremento
--
Decremento
68
operadores de incremento e decremento nos exemplos dos prximos captulos. No exemplo que segue j podemos ter uma noo de como funcionam estes operadores:
Pgina: exemplo18.php
<HTML>
<HEAD>
<TITLE>Exemplo 18</TITLE>
</HEAD>
<BODY>
<?
$numero = 5;
dor de incremento
print $numero++;
print <BR>;
dor de decremento
print $numero--;
print <BR>;
?>
</BODY>
</HTML>
69
uma instruo.
Pgina: exemplo19.php
<HTML>
<HEAD>
<TITLE>Exemplo 19</TITLE>
</HEAD>
<BODY>
<?
$numero1 = 5;
$numero2 = 4;
/* utiliza a expresso condicional para verificar se os valores das variveis: $numero1 e $numero2 so iguais e depois imprime um texto de acordo com o retorno da condio
/ comparao feita */
SOCIESC - Sociedade Educacional de Santa Catarina
70
print <BR>;
?>
</BODY>
</HTML>
Sntese
71
Exerccios propostos
1) Os operadores que permitem a realizao de clculos matemticos so (mltipla escolha):
a. Aritmticos
b. String
c. Atribuio
d. Incremento
2) Complete a frase com uma das alternativas abaixo:
A concatenao uma operao permitida pelo operador ... e tem como funo
....
a. Aritmtico, adicionar variveis
b. Atribuio, atribuir valor s variveis
c. String, unir valores das variveis
d. Decremento, separar o valor da varivel em dois
3) O operador que retorna o resto de uma diviso (apenas uma alternativa
correta):
a. Aritmtico Diviso
b. Aritmtico Mdulo
c. Aritmtico - Incremento
d. Aritmtico - Atribuio
4) Os operadores de atribuio so utilizados para (mltipla escolha):
a. Atribuir valores as variveis
b. Atribuir tipo de dados em variveis
c. Executar uma operao matemtica em uma varivel
d. Executar uma operao matemtica somente aps a atribuio de um valor
72
Aula 6
ESTRUTURAS DE CONTROLE
Caro aluno(a)!
Nesta sexta aula voc estudar sobre as estruturas
de controle disponveis na linguagem PHP. Vamos
aprender quais so essas estruturas e quando podemos utiliz-las
dentro das nossas aplicaes. Tambm desenvolveremos vrios
exemplos com as estruturas de controle para testar e compreender
melhor a funo de cada uma.
Bons Estudos!
Objetivos da Aula
Contedos da Aula
Estruturas de Seleo;
Estruturas de Repetio;
Exerccios Propostos.
73
74
como funo validar condies e comparar o resultado das condies. Aps executar
as funes de validao e comparao, as estruturas de seleo iro executar os blocos de comando, definidos de acordo com o resultado da comparao.
75
Instruo;
Ou
IF(condio){
Instruo1;
Instruo2;
Etc;
A primeira sintaxe utilizada quando temos apenas uma instruo PHP a ser
Veja o exemplo.
76
Pgina: exemplo20.php
<HTML>
<HEAD>
<TITLE>Exemplo 20</TITLE>
</HEAD>
<BODY>
<?
// testando o if
$numero1 = 5;
$numero2 = 4;
*/
if ($numero1!=$numero2){
rentes;
?>
</BODY>
</HTML>
print <BR>;
possuem valores diferentes foi impressa na tela, pois realmente elas possuem valores diferentes. Utilizando o operador de comparao de desigualdade, a condio
retornou um valor booleano verdadeiro, pois as variveis possuem valores diferentes.
Vamos agora utilizar o mesmo exemplo, porm alterando a condio para veri-
ficar se os valores das variveis so iguais. Para isso, vamos utilizar o operador de
comparao de igualdade:
77
Pgina: exemplo21.php
<HTML>
<HEAD>
<TITLE>Exemplo 21</TITLE>
</HEAD>
<BODY>
<?
// testando o if
$numero1 = 5;
$numero2 = 4;
*/
if ($numero1==$numero2){
As
variveis
possuem
valores
iguais;
?>
</BODY>
</HTML>
print <BR>;
na tela, por qu? Porque a condio retornou um valor falso, ou seja, o valor das duas
variveis no verdadeiro.
Certo, mas neste caso ento, como fazemos para mostrar alguma mensagem
78
IF(condio)
Instruo;
Else
Instruo;
Instruo1;
Instruo2;
Etc;
} Else {
Instruo1;
Instruo2;
Etc;
do If for falso. Podemos ainda utilizar um encadeamento de condies quando precisamos analisar uma srie de condies no mesmo procedimento. Esse encadeamento uma mistura entre IFs e Elses dentro do cdigo. Veja como fica a sintaxe:
IF(condio1){
Instruo1;
Instruo2;
Etc;
} Else IF(condio2) {
Instruo1;
Instruo2;
Etc;
79
} Else IF(condio3) {
Instruo1;
Instruo2;
Etc;
} Else IF(condioN) {
Instruo1;
Instruo2;
Etc;
} Else {
Instruo1;
Instruo2;
Etc;
de ifs. Esse tipo de procedimento pode ser utilizado de acordo com a quantidade de
condies e comparaes que devem ser executadas pela aplicao. importante
lembrar que as instrues do Else If sero executadas somente se a condio do IF
tiver valor verdadeiro, caso contrrio, as instrues executadas sero as do Else final,
que no possui um IF com uma condio para comparar, por isso executado quando
o valor da condio de todos os Ifs for falso.
IF encadeado:
Pgina: exemplo22.php
<HTML>
<HEAD>
<TITLE>Exemplo 22</TITLE>
</HEAD>
<BODY>
<?
80
// testando o IF encadeado
$numero1 = 5;
$numero2 = 4;
$numero3 = 5;
// utilizando o If encadeado
if ($numero1==$numero2){
valores iguais;
print <BR>;
} else if ($numero1==$numero3){
valores iguais;
print <BR>;
} else if ($numero2==$numero3){
valores iguais;
print <BR>;
} else {
tes;
print <BR>;
?>
</BODY>
</HTML>
2.2 Switch
81
teremos sempre que montar um IF com vrios Else If at completar todos os valores
que desejamos testar. Utilizando o Switch para esse mesmo procedimento, o cdigo
ficar mais enxuto e ter o mesmo efeito. Vamos analisar a sintaxe do switch:
Switch(valor_a_ser_comparado){
Case valor1:
Instruo;
Break;
Case valor2:
Instruo;
Break;
Default:
Instruo;
Break;
exemplo a seguir:
Pgina: exemplo23.php
<HTML>
82
<HEAD>
<TITLE>Exemplo 23</TITLE>
</HEAD>
<BODY>
<?
// testando o switch
$numero = 10;
// utilizando o switch com varivel
switch($numero){
case 0:
break;
case 5:
break;
case 10:
break;
default:
de 0,5 e 10;
break;
print <br><br>;
switch($numero/2){
case 0:
break;
case 5:
83
break;
default:
ferente de 0 e 5;
?>
</BODY>
</HTML>
break;
3 ESTRUTURAS DE REPETIO
um bloco de comandos vrias vezes at que uma dada condio fique com o valor
falso. Existem trs tipos de estruturas de repetio: While, Do...While e For. Todas
possuem a mesma funcionalidade, repetir as instrues do bloco de comandos at
que uma dada condio fique com o valor falso, porm as trs fazem a validao da
condio de forma diferente.
Instruo;
84
While(condio){
Instruo1;
Instruo2;
InstruoN;
Tal qual o If, a condio entre os parnteses do while devem possuir um valor
verdadeiro para que as instrues sejam executadas. Dessa forma, somente se o resultado da condio for verdadeiro que as instrues sero executadas.
o valor da condio testado se torne falso, caso contrrio, a aplicao ficar em eterno
loop, ou seja, estar executando as instrues eternamente. Isso acontece porque
as instrues somente sero executadas quando o valor da condio for verdadeiro.
Se a condio permanecer eternamente com o valor verdadeiro a aplicao estar
executando as instrues infinitamente. Essa caracterstica comum para todas as
estruturas de repetio.
Pgina: exemplo24.php
<HTML>
<HEAD>
<TITLE>Exemplo 24</TITLE>
</HEAD>
<BODY>
<?
// testando o while
$numero = 1;
85
while($numero<10){
mero . <br>;
aumentar o valor
++$numero;
.$numero . <BR>;
if($numero==10)
?>
</BODY>
</HTML>
3.2 Do ... while
rena entre elas que o while testa a condio no nicio do comando e a estrutura
do...while testa a condio no final do comando. Isso significa que, se a condio
estiver com o valor falso, utilizando do...while as instrues sero executadas uma
vez. Utilizando while, se a condio estiver com o valor falso, as instrues no sero
executadas.
86
Do{
Instruo;
}while(condio);
<HTML>
<HEAD>
<TITLE>Exemplo 25</TITLE>
</HEAD>
<BODY>
<?
// testando o do...while
$numero = 10;
// utilizando do...while para testar se o valor da varivel
$numero menor que 10
do{
mero . <br>;
// utilizando o operador de incremento para aumentar o valor
++$numero;
// imprime o novo valor da varivel $numero
mero . <BR>;
87
if($numero>=10)
}while($numero<10);
?>
</BODY>
</HTML>
3.3 For
Instruo;
InstruoN;
88
Entre as vrias utilidades que a estrutura For nos possibilita, a principal a faci-
lidade para trabalhar com variveis do tipo array. Como j vimos no captulo sobre os
tipos de dados, um array uma varivel com vrias posies para armazenamento de
valores. Sempre sabemos a quantidade de posies que o array possui, portanto temos as informaes de tamanho dessa lista de variveis. No exemplo abaixo, iremos
compreender melhor a utilizao do For para mostrar os valores das posies de um
Array:
Pgina: exemplo26.php
<HTML>
<HEAD>
<TITLE>Exemplo 26</TITLE>
</HEAD>
<BODY>
<?
// testando o for
$arrayNomes[0] = Joo;
$arrayNomes[1] = Jos;
$arrayNomes[2] = Maria;
$arrayNomes[3] = Felisberto;
for($contador=0;$contador<=3;$contador++){
?>
</BODY>
</HTML>
89
A estrutura de controle break pode ser utilizada como suporte pelas estruturas
diatamente ele pra a execuo das instrues e segue para as demais instrues
definidas.
Pgina: exemplo27.php
<HTML>
<HEAD>
<TITLE>Exemplo 27</TITLE>
</HEAD>
<BODY>
<?
90
for($numero=0;$numero<=10;$numero++){
if( ($numero%2) == 0 ) {
$numero
mltiplo
de
2<br>;
break;
?>
</BODY>
</HTML>
0. Porque isto aconteceu? Porque, aps a impresso da mensagem na tela, o interpretador encontrou a estrutura de quebra de fluxo Break. Quando o interpretador
encontra o Break, pra imediatamente de executar as instrues da estrutura onde o
Break se encontra e passa a executar as instrues que esto na seqncia dessa
estrutura.
91
<HTML>
<HEAD>
<TITLE>Exemplo 28</TITLE>
</HEAD>
<BODY>
<?
for($numero=0;$numero<=10;$numero++){
if( ($numero%2) == 0 ) {
$numero
mltiplo
de
2<br>;
continue;
?>
</BODY>
</HTML>
92
Sntese
trole.
Exerccios propostos
1) As estruturas de controle disponveis no PHP so ( permitida mltipla escolha):
a. Repetio
b. Atribuio
c. Seleo
d. Quebra de Fluxo
2) A estrutura de controle If uma estrutura do tipo (apenas uma alternativa est
correta):
a. Condio
b. Seleo
c. Atribuio
d. Repetio
3) A estrutura de controle Switch se assemelha a outra estrutura de controle.
Qual a estrutura?
a. For
b. If
c. Break
d. While
93
Aula 7
CLASSES E OBJETOS
Caro aluno(a)!
Nesta aula voc estudar sobre programao orientada a objetos na linguagem PHP.
Revisaremos os conceitos bsicos da Orientao a Objetos; verificaremos a aplicao desses conceitos na linguagem PHP e, ao
final, construiremos alguns exemplos utilizando a programao
orientada a objetos. O contedo visto nesta aula ser bastante aplicado no nosso estudo de caso.
Bons Estudos!
Objetivos da Aula
Contedos da Aula
Exerccios Propostos.
94
95
caractersticas principais para desenvolvermos aplicaes para Internet. O tema Orientao a Objetos, que verificaremos neste captulo, abordar alguns conceitos bsicos da Orientao a Objetos e tambm demonstrar como podemos, por meio da
linguagem PHP, aplicar seus conceitos no desenvolvimento de aplicaes.
como a estrutura que cria novos objetos. Isso significa que todos os objetos utilizados
em um sistema so criados por meio da estrutura das classes.
Vimos que podemos utilizar variveis do tipo array para armazenar mais de
os objetos possuem caractersticas diferentes. Vamos imaginar que estamos desenvolvendo um sistema acadmico onde h a manuteno do cadastro de alunos. Por
meio dessa manuteno possvel: cadastrar novos alunos, alterar cadastros de alunos existentes, apagar e visualizar o cadastro completo do aluno.
96
Alm disso, utilizar objetos nos permite ainda outro recurso, a possibilidade de
Nome, Endereo e Telefone. Os valores dos atributos sero os dados do Aluno armazenados no sistema e, para cada registro de Aluno no sistema existir um objeto
Aluno. Como os atributos esto agrupados em um nico local, possvel definir funcionalidades para o tratamento dos dados destes atributos.
97
atributos alterados.
Vamos analisar outra funcionalidade, a que permite apagar os dados dos alu-
nos. Essa funcionalidade tambm permitir apagar qualquer registro de aluno, salvo
algumas restries que podem ser definidas na aplicao. Logo, a funcionalidade
remover registro de aluno tambm comum para todos os objetos Aluno.
relembrar a definio da classe: pode ser definida como uma estrutura que cria objetos.
por meio da classe que vamos conseguir criar objetos em nossas aplicaes.
A classe ento possuir a estrutura do objeto que vai criar. Vamos utilizar o exemplo
do objeto Aluno para verificar o formato de uma classe:
Classe Aluno
Atributos:
Matrcula
Nome
Endereo
Telefone
98
Funcionalidades:
Cadastra Aluno
utos utilizados pelo objeto Aluno e tambm suas funcionalidades. A funo da classe
ter a estrutura final de como o objeto dever ser criado na memria. Assim, a classe
deve ter a relao de todos os atributos e funcionalidades que o objeto vai ter depois
de criado. Dessa forma, quando precisarmos criar um objeto Aluno, sempre iremos
chamar a classe Aluno para saber qual a estrutura do Aluno que deve ser criada.
Atributos
objetos que armazenam os dados. Os atributos de uma classe devem ser definidos de
acordo com os dados dos objetos que desejamos armazenar e/ou manipular.
construtor. O mtodo construtor sempre ser executado toda vez que a classe for
99
utilizada para criar um novo objeto. Uma classe pode ter mais de um mtodo construtor, mas para isso dever ser aplicado o conceito de sobrecarga de mtodos dos
conceitos da Orientao a Objetos.
Fique sabendo
A sobrecarga de mtodos um recurso da Orientao a Objetos que permite a
criao de um mtodo com o nome de um outro j existente, porm com parmetros diferentes quantidade de parmetros que o mtodo ir receber e/ou tipo de
dados desses parmetros.
funcionalidades de um objeto. Para cada funcionalidade do objeto, teremos um mtodo de funcionalidade definido dentro da classe. A ao que o mtodo ir executar tambm ser definida dentro da classe, pois a ao da funcionalidade j estar completa
e disponvel para ser utilizada pelo objeto, assim que o objeto for criado.
o chamou. Os parmetros so opcionais e podem ser utilizados para auxiliar na funo que o mtodo ir desempenhar. Os parmetros geralmente so variveis que a
aplicao/procedimento utiliza para o auxlio da execuo de alguma funo. Vamos
considerar, por exemplo, que temos uma classe que cria objetos e realiza clculos
matemticos. Nessa classe h o mtodo: soma que recebe dois nmeros como parmetro e retorna a soma desses dois nmeros. Nesse caso, os nmeros foram passados por parmetro para auxiliar na execuo da funo do mtodo: realizar a soma
dos nmeros recebidos por parmetro.
100
class NomeDaClasse{
[modificador] atributo1;
[modificador] atributoN;
Instruo1;
InstruoN;
Instruo1;
InstruoN;
nem a visibilidade dos itens da classe e, conseqentemente, do objeto criado por meio
dela. A visibilidade identificar como os atributos e mtodos sero utilizados por toda
a aplicao. H trs tipos de visibilidade:
101
o modificador private no incio da declarao - porque, segundo o conceito de encapsulamento da orientao a objetos, somente o prprio objeto poder manipular seus
atributos, mantendo a integridade dos dados dos objetos e evitando que procedimentos alheios ao objeto prejudiquem os dados armazenados.
seguir.
Pgina: class.operacao.php
<?
// declara a classe
// o objeto que for criado por meio desta classe assumir
a visibilidade e nome // da classe
class Operacao{
//declara um atributo
private $resultado;
102
return $this->resultado;
?>
erro, porm no ser mostrada nenhuma mensagem na tela, porque criamos apenas
o formato da classe, ou seja, a estrutura que um objeto ir possuir. Para testarmos
o funcionamento dessa classe, vamos criar outro arquivo de exemplo que utilizar
a estrutura da classe para criar objetos: Operacao. Quando utilizamos uma classe
para criar um objeto, dizemos que instanciamos um novo objeto. Todos os objetos
so instanciados por meio de uma classe j definida. Esse tambm um conceito da
Orientao a Objetos.
Pgina: exemplo29_form.php
<HTML>
<HEAD>
<TITLE>Exemplo 29</TITLE>
</HEAD>
<BODY>
<!-Este um comentrio em HTML!
103
method=post>
104
los anteriores.
HTML com dois campos de texto para preenchimento. Aps informarmos os nmeros
e clicarmos no boto: Calcular Soma, as validaes sero feitas, o objeto Operacao
105
ser criado e o mtodo: adicao executado. Como o mtodo adicao retorna o resultado,
podemos imprimir o resultado na tela. Ao final, como no iremos mais utilizar o objeto:
Operao, podemos destru-lo, removendo-o da memria.
Sntese
Exerccios propostos
1) A diferena entre uma classe e um objeto (apenas uma alternativa est correta):
a. O objeto armazenado em memria e a classe no
b. A classe possui a estrutura de um objeto
c. O objeto possui a estrutura de uma classe
d. A classe armazena variveis na memria
2) A sintaxe correta para criar um objeto (apenas uma alternativa est correta):
a. $objeto = TipoObjeto();
b. objeto = new TipoObjeto();
c. objeto = TipoObjeto()
d. $objeto = new TipoObjeto();
3) Exerccio prtico:
Desenvolva os mtodos: subtrao, multiplicao e diviso para a classe: class.operacao.php e altere o formulrio do exemplo29.php para permitir que o usurio selecione a operao que deseja realizar.
Aula 8
CONTROLE DE SESSO
Caro aluno(a)!
Nesta oitava aula voc estudar sobre o controle de
sesso em PHP. Verificaremos o que uma sesso e
como podemos utiliz-la em aplicaes para Internet. O controle de
sesso muito utilizado, principalmente por aplicaes que possuem restrio de acesso de usurios.
Bons Estudos!
Objetivos da Aula
Contedos da Aula
Exerccios propostos.
106
107
servidor quando acessamos aplicaes na Internet. Assim, todas as aplicaes desenvolvidas para Internet estaro instaladas em um servidor que disponibilizar a
aplicao aos usurios, por meio da conexo entre a mquina cliente e o servidor.
acesso aplicao no servidor, criada uma sesso de conexo entre a mquina cliente e o servidor, mantida pela prpria mquina cliente at a finalizao do acesso
aplicao. A sesso ser encerrada somente quando o usurio fechar a aplicao ou
por algum imprevisto na conexo cliente-servidor.
tivemos uma pequena introduo s variveis de sesso. Quando uma conexo cliente-servidor estabelecida, a sesso do cliente criada. Aps a criao da sesso,
possvel utiliz-la para criar variveis.
valor, pois o interpretador PHP utilizar a tipagem automtica para atribuir o tipo de
dado varivel.
108
de sesso.
session_is_registered(nome_da_variavel) - verifica se a varivel de sesso
existe na sesso. Essa funo ir retornar um valor booleano - verdadeiro ou
falso.
session_destroy() = finaliza todas as variveis de sesso registradas.
Se, por algum motivo, desejarmos encerrar uma nica varivel de sesso, de-
emplo: exemplo30.php, que possuir um formulrio HTML de autenticao de usurios; o exemplo31.php, que far a validao dos dados informados no formulrio HTML,
criar uma varivel de sesso e redirecionar para o exemplo32.php. O exemplo32.
php estar validando a criao da varivel de sesso e mostrando uma mensagem na
tela.
Pgina: exemplo30_form.php
<HTML>
<HEAD>
<TITLE>Exemplo 30</TITLE>
</HEAD>
<BODY>
<form name=form1 action=exemplo31.php
method=post>
Pgina: exemplo31_form.php
<?
//inicia a sesso
session_start();
if(isset($_POST[login])){
$login = $_POST[login];
$senha = $_POST[senha];
//verifica se o login e senha informados esto corretos
if($login == user && $senha == 1234){
//cria a varivel de sesso
$_SESSION[user] = $login;
}
}
// redireciona para a tela exemplo32.php
header(location:exemplo32.php);
?>
Pgina: exemplo32_form.php
<?
//inicia a sesso
session_start();
?>
<HTML>
<HEAD>
<TITLE>Exemplo 32</TITLE>
</HEAD>
<BODY>
SOCIESC - Sociedade Educacional de Santa Catarina
109
110
<?
//verifica se a varivel de sesso foi criada
if(session_is_registered(user)){
print Sesso criada com sucesso.;
} else {
print A sesso no foi criada, login e senha incorretos;
}
//destroi a sesso
session_destroy();
?>
<br><br>
<a href =exemplo30.php>Voltar para tela de Autenticao</
a>
</BODY>
</HTML>
php e tambm incorretos para validar a criao da varivel de sesso. Uma sesso
pode ter N variveis de sesso, porm, por medida de segurana, no aconselhvel manter muitos dados em sesso.
Antes de finalizarmos esse captulo, vamos analisar uma nova instruo uti-
111
Sntese
Exerccios propostos
1) A sesso pode ser definida como (apenas uma alternativa correta):
a. Uma varivel
b. Uma constante
c. Uma identificao de conexo
d. Uma estrutura de controle
2) Quando utilizamos variveis de sesso, conseqentemente estas variveis
estaro armazenadas:
a. No banco de dados
b. No HD disco fsico
c. Na memria
d. Na sesso da mquina cliente
112
Aula 9
Objetivos da Aula
Contedos da Aula
Introduo;
Exerccios Propostos.
113
114
1 INTRODUO
contedo dinmico, ou seja, possuem o contedo armazenado em um banco de dados. Manter o contedo atualizado desse tipo de aplicao muito mais fcil e rpido
do que manter o contedo de aplicaes estticas, desenvolvidas apenas com HTML,
pois no necessrio alterar o leaiute da pgina a cada alterao de contedo. Basta
que esteja definido onde sero publicados os contedos armazenados em banco de
dados e, conforme so atualizados sero disponibilizados automaticamente no local
definido.
grande parte dos bancos de dados. Alm disso, a combinao: PHP e MySQL tem
sido um par perfeito desde o incio da popularidade do PHP.
PHP disponibiliza para podermos desenvolver aplicaes com contedo dinmico armazenado no banco de dados MySQL.
banco de dados MySQL. Identificar essas funes no manual do PHP bem simples,
pois todas elas iniciam com o termo: mysql.
A conexo com o servidor de banco de dados MySQL, em PHP, feita por meio
115
exo estabelecida e dever ser armazenado numa varivel para ser utilizado depois
na seleo do banco de dados e tambm nos procedimentos de manipulao com o
banco de dados.
Aps efetuar com sucesso a conexo com o MySQL, ser necessrio sele-
cionar o banco de dados que possui os dados da aplicao. Essa seleo feita por
meio da funo int mysql_db_query, que possui a seguinte sintaxe:
mysql_db_query(nome_banco, identificador_conexao);
Caso a seleo do banco de dados seja feita com sucesso, ser possvel reali-
zar qualquer manipulao nos dados desse banco de dados, desde que o usurio utilizado para a conexo com o servidor tenha permisso para realizar tais operaes.
1.2 Executando comandos de manipulao de dados
116
dos SQL:
do a funo for executada com sucesso, significa que instruo SQL foi executada
corretamente pelo servidor MySQL e a manipulao dos dados foi executada com
sucesso.
1.3 Executando comandos de seleo de dados
ry. A linha especifica a linha de registro a ser exibida, j que uma query SELECT pode
retornar diversas linhas de registros, e campo o identificador do campo a ser exibido.
Vejamos um exemplo:
$consulta = SELECT nome, email FROM usuario WHERE nome
LIKE Joo;
SOCIESC - Sociedade Educacional de Santa Catarina
117
O retorno dessa funo ser um array de registros. Assim torna-se mais fcil
tratar um resultado com vrias linhas, e sem utilizar os nomes dos campos na rotina
de tratamento do resultado. Vamos analisar o mesmo exemplo, porm agora utilizando a funo mysql_fetch_row:
$consulta = SELECT nome, email FROM usuario;
$resultado = mysql_query($consulta, $conexao);
while ($linha = mysql_fetch_row($resultado)) {
print Nome: . $linha[0] . <BR>;
print e-mail: . $linha[1] . <BR>;
}
Nessa aula conhecemos apenas algumas funes bsicas que permitem a in-
tegrao do PHP com o banco de dados MySQL, porm existem outras funes que
auxiliam nessa integrao. Na prxima aula desenvolveremos um estudo de caso e
aplicaremos os conceitos de integrao com o banco de dados MySQL vistos nesse
captulo.
118
Sntese
Exerccios propostos
Para resolver os exerccios seguintes, obrigatria a criao do banco de dados revenda do modelo ER abaixo. Este banco de dados tambm ser utilizado
no estudo de caso da prxima aula.
1) Crie um arquivo em PHP que faa a conexo com o banco de dados MySQL,
selecione o banco de dados revenda e em seguida, utilize as funes de integrao para executar os seguintes comandos SQL:
a. Inserir os seguintes registros na tabela Marcas:
i. 1 Citroen
ii. 2 Audi
119
iii. 3 Renault
Aula 10
ESTUDO DE CASO:
REVENDA DE AUTOMVEIS
Caro aluno(a)!
Nesta dcima aula reveremos todos os conceitos vistos at agora e consolidaremos nossos conhecimentos
com o incio do desenvolvimento de uma aplicao para revenda
de automveis.
Contedos da Aula
Caractersticas da Aplicao;
120
121
1 CARACTERSTICAS DA APLICAO
aula anterior. A aplicao tem como objetivo atender as necessidades de uma revenda
de automveis, cuja inteno desenvolver um site na Internet que permita ao usurio
selecionar marcas e/ou modelos de automveis e visualizar uma lista de automveis
disponveis para venda.
Essas duas classes sero o corao da nossa aplicao, pois todos os objetos
<?php
class ConexaoBanco {
122
private $conexao;
ras classes
>user, $this->password);
if
(!ConexaoBanco::$instancia)
construtor
return ConexaoBanco::$instancia;
return $this->conexao;
function __destruct(){
123
mysql_close($this->conexao);
}
?>
que farr a conexo com o MySQL, por meio dos dados dos atributos privados j
selecionados com os dados de conexo com o MySQL. Nessa classe, existe tambm
o mtodo destrutor, que fechar a conexo com o banco de dados, quando o objeto
for finalizado/destrudo. A funo que fecha a conexo com o banco de dados a
mysql_close.
<?php
require(class.conexaobanco.php);
class AcessoBanco{
private $conexao;
//mtodo construtor
124
$oConexaoBanco = ConexaoBanco::getInstancia();
$this->conexao = $oConexaoBanco->getConexao();
ro
public
function
getValorCampo($paramCampo,
$paramFrom,
$paramWhere){
$valorCampo = ;
$paramFrom .
WHERE . $paramWhere;
$this->conexao);
//pega a qtde de registros retornados
if ($qtdeRegistros > 0) {
$valorCampo = mysql_result($resultado,0,$paramCa
mpo);
return $valorCampo;
125
$paramCondicao = , $paramOrdenacao = ){
dos
$paramTabela;
if (!empty($paramCondicao)){
if (!empty($paramOrdenacao)){
$this->conexao);
$i = 0;
$arrayRegistro = array();
dos
$arrayRegistro[$i] = $registro;
$i++;
126
return $arrayRegistro;
o ltimo id inserido
$paramValores){
$id = 0;
$paramCampos . )
VALUES( . $paramValores . ) ;
$this->conexao);
$id = mysql_insert_id($this->conexao);
if (mysql_errno($this->conexao)){
echo mysql_error($this->conexao);
return $id;
127
$paramCondicao){
$resultado = 0;
$paramCampos .
WHERE . $paramCondicao;
$this->conexao);
if (mysql_errno($this->conexao)){
echo mysql_error($this->conexao);
return $resultado;
cao){
. $paramCondicao;
128
}
?>
e por todo tipo de manipulao e seleo dos dados no banco. Essa classe possui um
mtodo para cada tipo de comando SQL, permitindo flexibilidade e organizao dos
comandos SQL em um nico local. Observando os mtodos criados, identificamos
uma palavra que no tinha sido mencionada at o momento, a palavra static, que
tambm faz parte do conceito de orientao a objetos e indica que no necessria
a criao de um objeto em memria para utilizar os mtodos da classe. Isso significa
que no precisamos utilizar o comando new Objeto() para utilizar o mtodo static,
basta apenas informar qual a classe que possui o mtodo static e cham-lo.
cas, porm existem outras classes na aplicao que possuem a mesma estrutura e
que sero disponibilizadas para os testes e desenvolvimento dos demais recursos da
aplicao.
129
programao orientada a objetos e identifica as classes que possuem a estrutura das tabelas definidas no banco de dados. Para cada tabela no banco
de dados ser criada uma classe com a estrutura dessa tabela, cujos campos
sero os atributos da classe. Para cada atributo dessa classe existiro dois
mtodos: um que atribui um valor para o atributo e outro que retorna o valor do
atributo. So os chamados mtodos: set e get da orientao a objetos.
2. Classe com a Regra de Negcio do objeto Bean essa classe possuir
os mtodos/funcionalidades de negcio disponveis para o objeto Bean correspondente. Essa classe possuir mtodos static, para cham-los, no ser
necessria a criao do objeto Regra de Negcio.
<?php
class Marca{
//atributos
private $cod;
private $desc;
$this->cod = 0;
$this->desc = ;
//mtodos da classe
//cod
$this->cod = $paramCod;
130
return $this->cod;
//desc
$this->desc = $paramDesc;
return $this->desc;
}
?>
simples possui dois atributos e quatro mtodos. Para cada atributo da classe h um
mtodo: set, que atribui valor ao atributo, e um mtodo: get, que retorna o valor do
atributo. Para todas as tabelas do sistema ser necessrio criar uma classe semelhante, lembrando sempre que os atributos da classe so os campos da tabela em
questo.
<?php
require_once(class.marca.php);
require_once(class.acessobanco.php);
131
class MarcaRN{
$paramOrderBy = marca_desc){
$tabela = marcas;
$condicao = $paramCondicao;
$resultado
$acessoBanco->selectRegistro($tabela,
$paramOrderBy = marca_desc){
$tabela = marcas;
132
$condicao = $paramCondicao;
$resultado
$acessoBanco->selectRegistro($tabela,
$lista = self::geraArrayObjeto($resultado);
//destroi objeto
unset($acessoBanco);
return $lista;
ray de objetos
$i = 0;
$marcas = array();
//instancia o objeto
$marca->setCod($array[marca_cod]);
$marca->setDesc($array[marca_desc]);
$marcas[$i] = $marca;
133
$i++;
return $marcas;
//retorna um objeto
$tabela = marcas;
$resultado
$acessoBanco->selectRegistro($tabela,
$campos, $condicao);
$marca = ;
if(sizeof($resultado)>0){
$marca->setCod($resultado[0][marca_cod]);
$marca->setDesc($resultado[0][marca_desc]);
134
//destroi objeto
unset($acessoBanco);
return $marca;
$tabela = marcas;
$resultado
$acessoBanco->updateRegistro($tabela,
$campos, $condicao);
//destroi objeto
unset($acessoBanco);
//altera o objeto
135
$tabela = marcas;
. ;
$resultado
$acessoBanco->insertRegistro($tabela,
$campos, $valor);
//destroi objeto
unset($acessoBanco);
//deleta o objeto
$tabela = marcas;
$resultado
$acessoBanco->deleteRegistro($tabela,
$condicao);
//destroi objeto
136
unset($acessoBanco);
}
?>
tabela no banco de dados. No caso da classe: MarcaRN, criaremos mtodos especficos para a manipulao dos dados da tabela: Marcas do banco de dados revenda.
manipulao no banco de dados. H dois mtodos de seleo no banco: o getListaObjeto que ir retornar uma lista de objetos Marca, de acordo com a quantidade de registros existente no banco de dados e o getObjeto, que retorna um nico objeto Marca.
Esse segundo mtodo utilizado para pegar um registro especfico da tabela por meio
da chave primria campo que identifica o registro no banco de dados.
registros no banco de dados. Existe um mtodo para cada operao comando SQL.
Nesses mtodos tambm utilizamos o mapeamento objeto relacional, porm nesse
momento transformaremos os objetos em memria nos registros do banco de dados.
seleo de registros no banco de dados, a classe: acessobanco, criada no tpico anterior, ser a ponte entre o objeto e o banco de dados.
137
Vamos agora criar as classes Bean e Regra de Negcio para as tabelas: Mod-
//atributos
private $cod;
private $desc;
private $marca_cod;
$this->cod = 0;
$this->desc = ;
$this->marca_cod = 0;
//mtodos da classe
//cod
$this->cod = $paramCod;
return $this->cod;
//desc
$this->desc = $paramDesc;
return $this->desc;
//marca_cod
$this->marca_cod = $paramMarcaCod;
return $this->marca_cod;
}
}
?>
<?php
require_once(class.modelo.php);
138
139
require_once(class.acessobanco.php);
class ModeloRN{
$paramOrderBy = mod_desc){
$tabela = modelos;
$condicao = $paramCondicao;
$resultado
$acessoBanco->selectRegistro($tabela,
$lista = self::geraArrayObjeto($resultado);
//destroi objeto
unset($acessoBanco);
return $lista;
ray de objetos
140
$i = 0;
$modelos = array();
//instancia o objeto
$modelo->setCod($array[mod_cod]);
$modelo->setDesc($array[mod_desc]);
$modelo->setMarcaCod($array[marca_cod]);
$modelos[$i] = $modelo;
$i++;
return $modelos;
//retorna um objeto
$tabela = modelos;
141
$resultado
$acessoBanco->selectRegistro($tabela,
$campos, $condicao);
$modelo = ;
if(sizeof($resultado)>0){
$modelo->setCod($resultado[0][mod_cod]);
$modelo->setDesc($resultado[0][mod_desc]);
$modelo->setMarcaCod($resultado[0][marca_
cod]);
//destroi objeto
unset($acessoBanco);
return $modelo;
142
$tabela = modelos;
$resultado
$acessoBanco->updateRegistro($tabela,
$campos, $condicao);
//destroi objeto
unset($acessoBanco);
//altera o objeto
$tabela = modelos;
. , . $Objeto->getMarcaCod() . ;
$resultado
$acessoBanco->insertRegistro($tabela,
$campos, $valor);
//destroi objeto
143
unset($acessoBanco);
//deleta o objeto
$tabela = modelos;
$resultado
$acessoBanco->deleteRegistro($tabela,
$condicao);
//destroi objeto
unset($acessoBanco);
}
?>
<?php
class Automovel{
//atributos
private $placa;
private $mod_cod;
private $ano;
private $preco;
private $cor;
private $combustivel;
private $km;
private $arcondicionado;
private $vidroeletrico;
private $vidroverde;
private $airbag;
private $travaeletrica;
private $alarme;
private $desembacador;
private $rodaliga;
private $volantehidraulico;
private $arquente;
private $abs;
private $cambioaut;
private $cdplayer;
private $isufilm;
private $limpadortraseiro;
private $outros;
private $vendido;
$this->placa = ;
$this->mod_cod = 0;
$this->ano = 0;
$this->preco = 0;
144
$this->cor = ;
$this->combustivel = ;
$this->km = 0;
$this->arcondicionado = 0;
$this->vidroeletrico = 0;
$this->vidroverde = 0;
$this->airbag = 0;
$this->travaeletrica = 0;
$this->alarme = 0;
$this->desembacador = 0;
$this->rodaliga = 0;
$this->volantehidraulico = 0;
$this->arquente = 0;
$this->abs = 0;
$this->cambioaut = 0;
$this->cdplayer = 0;
$this->isufilm = 0;
$this->limpadortraseiro = 0;
$this->outros = 0;
$this->vendido = 0;
//mtodos da classe
//placa
$this->placa = $paramPlaca;
return $this->placa;
145
//mod_cod
$this->mod_cod = $paramModCod;
return $this->mod_cod;
//ano
$this->ano = $paramAno;
return $this->ano;
//preco
$this->preco = $paramPreco;
return $this->preco;
//cor
$this->cor = $paramCor;
146
return $this->cor;
//combustivel
$this->combustivel = $paramCombustivel;
return $this->combustivel;
//km
$this->km = $paramKm;
return $this->km;
//arcondicionado
$this->arcondicionado = $paramArCondicionado;
return $this->arcondicionado;
147
//vidroeletrico
$this->vidroeletrico = $paramVidroEletrico;
return $this->vidroeletrico;
//vidroverde
$this->vidroverde = $paramVidroVerde;
return $this->vidroverde;
//airbag
$this->airbag = $paramAirBag;
return $this->airbag;
//travaeletrica
$this->travaeletrica = $paramTravaEletrica;
148
return $this->travaeletrica;
//alarme
$this->alarme = $paramAlarme;
return $this->alarme;
//desembacador
$this->desembacador = $paramDesembacador;
return $this->desembacador;
//rodaliga
$this->rodaliga = $paramRodaLiga;
return $this->rodaliga;
//volantehidraulico
149
co){
$this->volantehidraulico = $paramVolanteHidraulico;
return $this->volantehidraulico;
//arquente
$this->arquente = $paramArQuente;
return $this->arquente;
//abs
$this->abs = $paramAbs;
return $this->abs;
//cambioaut
150
$this->cambioaut = $paramCambioAut;
151
return $this->cambioaut;
//cdplayer
$this->cdplayer = $paramCdPlayer;
return $this->cdplayer;
//isufilm
$this->isufilm = $paramIsufilm;
return $this->isufilm;
//limpadortraseiro
){
$this->limpadortraseiro = $paramLimpadorTraseiro;
return $this->limpadortraseiro;
//outros
$this->outros = $paramOutros;
return $this->outros;
//vendido
$this->vendido = $paramVendido;
return $this->vendido;
}
?>
<?php
require_once(class.automovel.php);
require_once(class.acessobanco.php);
class AutomovelRN{
152
153
$paramOrderBy = aut_placa){
$tabela = automoveis;
$campos
aut_placa,mod_cod,aut_ano,aut_preco,aut_
cor,aut_combustivel,aut_km,aut_arcondicionado,;
$campos
.=
aut_vidroeletrico,aut_vidroverde,aut_
airbag,aut_travaeletrica,aut_alarme,aut_desembacador,;
$campos
.=
aut_rodaliga,aut_volantehidraulico,aut_
arquente,aut_abs,aut_cambioaut,aut_cdplayer,aut_isufilm,;
$campos .= aut_limpadortraseiro,aut_outros,aut_ven-
dido;
$condicao = $paramCondicao;
$resultado
$acessoBanco->selectRegistro($tabela,
$lista = self::geraArrayObjeto($resultado);
//destroi objeto
unset($acessoBanco);
return $lista;
154
ray de objetos
$i = 0;
$automovels = array();
//instancia o objeto
$automovel->setPlaca($array[aut_placa]);
$automovel->setModCod($array[mod_cod]);
$automovel->setAno($array[aut_ano]);
$automovel->setPreco($array[aut_preco]);
$automovel->setCor($array[aut_cor]);
$automovel->setCombustivel($array[aut_combus-
tivel]);
$automovel->setKm($array[aut_km]);
$automovel->setArCondicionado($array[aut_ar-
condicionado]);
$automovel->setVidroEletrico($array[aut_vidro-
eletrico]);
$automovel->setVidroVerde($array[aut_vidrov-
erde]);
$automovel->setAirBag($array[aut_airbag]);
$automovel->setTravaEletrica($array[aut_tra-
vaeletrica]);
$automovel->setAlarme($array[aut_alarme]);
$automovel-
>setDesembacador($array[aut_desembacador]);
$automovel->setRodaLiga($array[aut_rodaliga]);
155
$automovel->setVolanteHidraulico($array[aut_
volantehidraulico]);
$automovel->setArQuente($array[aut_arquente]);
$automovel->setAbs($array[aut_abs]);
$automovel->setCambioAut($array[aut_cambio-
aut]);
$automovel->setCdPlayer($array[aut_cdplayer]);
$automovel->setIsufilm($array[aut_isufilm]);
$automovel->setLimpadorTraseiro($array[aut_
limpadortraseiro]);
$automovel->setOutros($array[aut_outros]);
$automovel->setVendido($array[aut_vendido]);
$automovels[$i] = $automovel;
$i++;
return $automovels;
//retorna um objeto
$tabela = automoveis;
$campos
156
aut_placa,mod_cod,aut_ano,aut_preco,aut_cor,aut_
combustivel,aut_km,aut_arcondicionado,;
$campos
.=
aut_vidroeletrico,aut_vidroverde,aut_
airbag,aut_travaeletrica,aut_alarme,aut_desembacador,;
$campos
.=
aut_rodaliga,aut_volantehidraulico,aut_
arquente,aut_abs,aut_cambioaut,aut_cdplayer,aut_isufilm,;
$campos .= aut_limpadortraseiro,aut_outros,aut_ven-
dido;
$resultado
$acessoBanco->selectRegistro($tabela,
$campos, $condicao);
$automovel = ;
if(sizeof($resultado)>0){
$automovel->setPlaca($resultado[0][aut_
placa]);
$automovel->setModCod($resultado[0][mod_cod]);
$automovel->setAno($resultado[0][aut_ano]);
$automovel->setPreco($resultado[0][aut_
preco]);
$automovel->setCor($resultado[0][aut_cor]);
$automovel-
>setCombustivel($resultado[0][aut_combustivel]);
$automovel->setKm($resultado[0][aut_km]);
$automovel-
>setArCondicionado($resultado[0][aut_arcondicionado]);
157
$automovel->setVidroEletrico($resultado[0][aut
_vidroeletrico]);
$automovel->setVidroVerde($resultado[0][aut_
vidroverde]);
$automovel->setAirBag($resultado[0][aut_air-
bag]);
$automovel->setTravaEletrica($resultado[0][aut
_travaeletrica]);
$automovel->setAlarme($resultado[0][aut_
alarme]);
$automovel->setDesembacador($resultado[0][aut_
desembacador]);
$automovel->setRodaLiga($resultado[0][aut_ro-
daliga]);
$automovel->setVolanteHidraulico($resultado[0][
aut_volantehidraulico]);
$automovel->setArQuente($resultado[0][aut_ar-
quente]);
$automovel->setAbs($resultado[0][aut_abs]);
$automovel->setCambioAut($resultado[0][aut_
cambioaut]);
$automovel->setCdPlayer($resultado[0][aut_cd-
player]);
$automovel->setIsufilm($resultado[0][aut_isu-
film]);
$automovel-
->setLimpadorTraseiro($resultado[0][aut_limpadortraseiro]);
$automovel->setOutros($resultado[0][aut_out-
ros]);
$automovel->setVendido($resultado[0][aut_ven-
dido]);
158
//destroi objeto
unset($acessoBanco);
return $automovel;
}
?>
4 DESENVOLVENDO A INTERFACE COM O USURIO
nas PHP que possuiro a interface da aplicao com o usurio. Essas pginas utilizaro as classes Bean e Regra de Negcio para trabalhar com os objetos dentro da
aplicao. Desenvolveremos quatro pginas de interface:
1. index.php pgina principal da aplicao que permitir ao usurio selecionar uma Marca, um Modelo relacionado Marca selecionada e verificar a lista
de carros relacionadas ao Modelo para consulta.
2. admin/marca_lst.php pgina da administrao que permitir ao administrador da aplicao visualizar todos os registros armazenados na tabela: Marcas
do banco de dados.
3. admin/marca_frm.php pgina com o formulrio que permitir o cadastro e
alterao dos registros da tabela: Marcas.
4. admin/marca_action.php pgina que ir alterar os dados do objeto de acordo com a ao feita no formulrio: cadastro, alterao ou remoo e chamar
a classe Regra de Negcio para efetivar a alterao dos dados do objeto no
banco de dados.
Seguem os cdigos-fonte de cada pgina:
159
Pgina: index.php
<html>
<head>
<title>Revenda de Automveis</title>
<meta http-equiv=Content-Type content=text/html; charset=iso8859-1>
</head>
<body>
<?
//inclui as classes
require_once(classes/class.marcaRN.php);
require_once(classes/class.modeloRN.php);
require_once(classes/class.automovelRN.php);
?>
<form name=form1 method=post>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr>
Marcas:
<select
name=marca_cod
onChange=document.
form1.submit();>
<option
value=0>Selecione
Marca</op-
tion>
<?
$marca_cod=0;
if(isset($_POST[marca_cod])){
$marca_cod = $_POST[marca_cod];
$lista = MarcaRN::getListaObjeto(,);
160
foreach($lista as $oMarca){
?>
<option value=<?=$oMarca->getCod()?>
<?
?>
</select>
<br><br>
Modelos:
submit();>
tion>
<?
$condicao = ;
if(isset($_POST[marca_cod])){
$condicao
marca_cod
$_
POST[marca_cod];
$mod_cod=0;
if(isset($_POST[mod_cod])){
$mod_cod = $_POST[mod_cod];
$lista = ModeloRN::getListaObjeto($condicao
,);
foreach($lista as $oModelo){
161
?>
Cod()?>
<?
<option
value=<?=$oModelo->get-
($mod_cod==$oModelo->getCod())?print
selected:
<?
?>
</select>
</td>
<td width=5%> </td>
<td>
<table
width=100%
align=center
border=1
<tr bgcolor=#EAEAEA>
<td>Placa</td>
<td>Ano</td>
<td>Preco</td>
</tr>
<?
$lista = AutomovelRN::getListaObjeto($condi
cao,);
foreach($lista as $oAutomovel){
?>
<tr>
<td><?=$oAutomovel->getPlaca()?></td>
<td><?=$oAutomovel->getAno()?></td>
<td><?=$oAutomovel->getPreco()?></td>
</tr>
<?
162
}//foreach
?>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
Pgina: admin/marca_lst.php
<?
/* Indica que o arquivo no deve ficar em cache (fora o seu reprocessamento) */
require_once(classes/class.marcaRN.php);
?>
<input
name=btnNovo
type=button
value=Nova
Marca
onClick=location.href=marca_frm.php /><br><br>
<tr bgcolor=#EAEAEA>
<td>Cdigo</td>
<td>Descrio</td>
<td> </td>
</tr>
<?
$lista = MarcaRN::getListaObjeto(,);
foreach($lista as $oMarca){
163
?>
<tr>
<td><?=$oMarca->getCod()?></td>
<td><?=$oMarca->getDesc()?></td>
value=Alterar
onClick=location.href=marca_frm.
php?cod=<?=$oMarca->getCod()?> /></td>
</tr>
<?
}//foreach
?>
</table>
<?
//Libera objetos
unset($lista);
?>
Pgina: admin/marca_frm.php
<?
require_once(classes/class.marcaRN.php);
// verifica se cadastro ou alterao
if (isset($_GET[cod])){
// alterao
$cod = $_GET[cod];
$oMarca = MarcaRN::getObjeto($cod);
} else {
// cadastro
$cod = 0;
164
$desc = $oMarca->getDesc();
//Libera objetos
unset($oMarca);
?>
ding=0 cellspacing=0>
<tr>
td>
<td><input
name=cod
type=text
size=10
</tr>
<tr>
td>
<td><input
name=desc
type=text
size=40
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td width=30%> </td>
<td>
<input
name=btnCancelar
type=button
value=Cancelar onClick=location.href=marca_lst.php>
165
<? } ?>
</td>
</tr>
</table>
</form>
Pgina: admin/marca_action.php
<?
require_once(classes/class.marcaRN.php);
//Carrega ou cria objeto
if (isset($_POST[cod])){
$cod = $_POST[cod];
$oMarca = MarcaRN::getObjeto($cod);
}
//variavel booleana que ir verificar se um novo registro
$ehNovoRegistro = false;
//caso no exista o objeto cria um novo objeto pois um novo
registro
if(empty($oMarca)){
$ehNovoRegistro = true;
}
//Verifica se foi clicado no boto apagar
if
((isset($_POST[btnApagar]))
&&
($_POST[btnApagar]
Apagar)){
MarcaRN::delObjeto($oMarca);
==
166
}
}else{
$oMarca->setCod($_POST[cod]);
$oMarca->setDesc($_POST[desc]);
if ($ehNovoRegistro){
// adiciona o registro
MarcaRN::addObjeto($oMarca);
} else {
//altera o registro
MarcaRN::alterObjeto($oMarca);
}
unset($oMarca);
header(location:marca_lst.php)
?>
o. Para isso, basta criar as classes Bean e Regra de Negcio para as tabelas que
faltam. Alm disso, voc poder melhorar a administrao da aplicao, incluindo uma
tela de autenticao para os funcionrios da revenda. Se voc tiver dvidas de como
desenvolver esse recurso, retorne ao captulo 8 do livro-texto e verifique o exemplo
que desenvolvemos.
das outras tabelas do banco de dados, isso dar bastante flexibilidade para os mantenedores da aplicao.
167
Sntese
CONCLUSO
cliente-servidor e sistemas disponveis para acesso por meio de um navegador de Internet. Esse fato tem se tornado cada vez mais constante, pois manter as aplicaes
agrupadas em um local torna-se mais rentvel para as empresas, que economizaro
tempo e recursos com manuteno em aplicaes instaladas em diversas mquinas.
Isso sem contar os custos com licenas que os sistemas desktop podem acrescentar
ao oramento das empresas.
em grande escala. As empresas que fornecem aplicaes e softwares diversos possuem cada vez mais demanda para o profissional que est atualizado com este tipo
de tecnologia.
168
169
Aula 5
1) A,C,D
2) C
3) B
4) A,C
5) C,D
Aula 6
1) A,C,D
2) B
3) B
4) C
5) A,B,C
Aula 7
1) B
2) D
3)
class.operacao.php
<?
// declara a classe
// o objeto que for criado por meio desta classe assumir a visibilidade e nome
// da classe
class Operacao{
//declara um atributo
private $resultado = 0;
clculo e
// retornar o resultado
170
return $this->resultado;
return $this->resultado;
ro2){
return $this->resultado;
por zero
if($numero2>0){
ro2;
return $this->resultado;
171
}
?>
exemplo29.php
<HTML>
<HEAD>
<TITLE>Exemplo 29</TITLE>
</HEAD>
<BODY>
<!-Este um comentrio em HTML!
Quando queremos que o formulrio envie as variveis para a mesma
pgina, no especificamos o atributo: action do comando form
-->
<form name=form1
method=post>
172
Aula 9
1)
<HTML>
<HEAD>
<TITLE>Exemplo 33</TITLE>
</HEAD>
<BODY>
<?
//conecta com o banco de dados MySQL
$conexao = mysql_connect(localhost, root, vertrigo);
//seleciona o banco de dados revenda
mysql_db_query(revenda,$conexao);
173
174
175
REFERNCIAS BIBLIOGRFICAS
1. CONVERSE, Tim; PARK, Joyce. PHP A Bblia. So Paulo: Campus / Elsevier,
2003.
2. WIKIPDIA, a enciclopdia livre. Artigos Eletrnicos. Disponvel em: http://
pt.wikipedia.org/
3. Internet World Stats. Disponvel em: http://www.internetworldstats.com/
176
Crditos
SOCIESC Sociedade Educacional de Santa Catarina
Design Grfico
Thiago Vedoi de Lima
Equipe Didtico-Pedagcia
Rosemary Francisco