Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso:
Sistemas de Informação
DISCIPLINA:
Desenvolvimento
WEB III - 7142
Versão 4.0
6º período
Juiz de Fora-MG
2º Semestre / 2018
SUMÁRIO
APRESENTAÇÃO ................................................................................. 4
1-INTRODUÇÃO .................................................................................. 5
O que é PHP ? ............................................................................. 5
O que pode ser feito com PHP ?.................................................... 5
Como surgiu a linguagem PHP ? ................................................... 5
Instalação do PHP ....................................................................... 6
2-SINTAXE BÁSICA ............................................................................. 7
Delimitando o código PHP............................................................. 7
Separador de instruções ............................................................... 7
Nomes de variáveis ...................................................................... 7
Comentários ................................................................................ 8
3-PRIMEIROS SCRIPTS........................................................................ 9
Primeiro exemplo ......................................................................... 9
Utilizando formulários HTML ....................................................... 10
Interagindo com o browser......................................................... 11
4-TIPOS DE DADOS .......................................................................... 13
Tipos suportados ....................................................................... 13
Inteiros ..................................................................................... 13
Números em ponto flutuante ...................................................... 13
Strings ...................................................................................... 14
Arrays ....................................................................................... 15
Listas ........................................................................................ 16
Objetos ..................................................................................... 17
Booleanos ................................................................................. 17
Transformação de tipos .............................................................. 18
DESENVOLVIMENTO WEB III - 7142
5-CONSTANTES ................................................................................ 20
Constantes pré-definidas ............................................................ 20
Definindo constantes.................................................................. 20
6-OPERADORES ................................................................................ 21
Aritméticos ................................................................................ 21
De Strings ................................................................................. 22
De Atribuição ............................................................................ 22
Bit a Bit..................................................................................... 23
Lógicos ..................................................................................... 23
Comparação .............................................................................. 24
De Incremento e Decremento ..................................................... 25
Ordem de precedência dos operadores ....................................... 25
7-ESTRUTURAS DE CONTROLE .......................................................... 27
Blocos ....................................................................................... 27
Comandos de seleção ................................................................ 27
Comandos de repetição .............................................................. 31
Quebra de fluxo ......................................................................... 36
8-FUNÇÕES ...................................................................................... 38
Definindo funções ...................................................................... 38
Valor de retorno ........................................................................ 38
Argumentos .............................................................................. 38
Passagem de parâmetros por referência ...................................... 40
Argumentos com valores pré-definidos ........................................ 41
Contexto ................................................................................... 42
Escopo ...................................................................................... 42
Funções do PHP ........................................................................ 44
9-VARIÁVEIS .................................................................................... 47
O modificador static ................................................................... 47
Variáveis variáveis ..................................................................... 48
-2-
DESENVOLVIMENTO WEB III - 7142
-3-
DESENVOLVIMENTO WEB III - 7142
APRESENTAÇÃO
-4-
DESENVOLVIMENTO WEB III - 7142
1 - INTRODUÇÃO
O que é PHP?
PHP é uma linguagem que permite criar sites WEB dinâmicos, possibilitando
uma interação com o usuário através de formulários, parâmetros da URL e links. O
código PHP é executado no servidor, sendo enviado para o cliente apenas HTML
puro. Desta maneira é possível interagir com bancos de dados e aplicações
existentes no servidor, com a vantagem de não expor o código fonte para o cliente.
Útil quando o programa está lidando com senhas ou informação confidencial.
A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf.
A primeira versão ficou conhecida como “Personal Home Page Tools” (ferramentas
para página pessoal). Era composta por um sistema bastante simples que
interpretava algumas macros e alguns utilitários que rodavam “por trás” das home-
pages: um livro de visitas, um contador e algumas outras coisas.
Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de
PHP/FI, quando ele adicionou suporte a mSQL. Estima-se que em 1996 PHP/FI
estava sendo usado por cerca de 15.000 sites pelo mundo, e em meados de 1997
esse número subiu para mais de 50.000. Nessa época houve uma mudança no
desenvolvimento do PHP. Ele passou a ter uma equipe de desenvolvimento mais
organizada. O interpretador foi reescrito por Zeev Suraski e Andi Gutmans, e
esse novo interpretador foi a base para a versão 3.
Atualmente o uso do PHP vem crescendo numa velocidade incrível.
Em junho de 2004 foi lançada a versão 5 do PHP. Atualmente ele se encontra
na versão 7.2.8 (19/07/2018).
-5-
DESENVOLVIMENTO WEB III - 7142
Instalação do PHP
Os arquivos em PHP criados deverão ser salvos na pasta www que o WAMP5
criará em sua pasta raiz (C:/wamp/www/dw3), e para acessar esses arquivos via
browser você deverá ir pelo seguinte endereço local: http://127.0.0.1/ ou
http://localhost/. Seja organizado separando seus sites em pastas. Assim ficará mais
fácil encontrar o que precisa. Portanto crie subpastas no diretório www (Ex:
C:/wamp/www/dw3/aula).
Para edição dos arquivos .php, utilizaremos o programa PHP Editor Versão
2.22. PHP Editor é um editor freeware e totalmente em português destinado a
edição de páginas PHP e HTML. Para baixa-lo, acesse: http://www.dalamura.zip.net
Se você já utiliza outro editor de código fonte, fique a vontade para continuar
utilizando o mesmo.
-6-
DESENVOLVIMENTO WEB III - 7142
2 – SINTAXE BÁSICA
<?php
comandos
?>
<script language=”php”>
comandos
</script>
<?
comandos
?>
<%
comandos
%>
Separador de Instruções
Nomes de Variáveis
Toda variável em PHP tem seu nome composto pelo caracter $ e uma string,
que deve iniciar por uma letra ou o caracter “_”. PHP é case sensitive, ou seja, as
variáveis $var e $VAR são diferentes. É costume usar minúsculas.
-7-
DESENVOLVIMENTO WEB III - 7142
Comentários
Há dois tipos de comentários em código PHP:
Exemplo:
<?
echo “teste”; /* Isto é um comentário com mais
de uma linha
*/
?>
-8-
DESENVOLVIMENTO WEB III - 7142
3 – PRIMEIROS SCRIPTS
Primeiro Exemplo
Neste exemplo, criaremos um script com uma saída simples, que servirá, entre
outras coisas, para testar se a instalação foi feita corretamente:
<html>
<head><title>Aprendendo PHP</title></head>
<body>
</body>
</html>
Isso mostra como o PHP funciona. O script é executado no servidor, ficando
disponível para o usuário apenas o resultado. Agora vamos escrever um script que
produza exatamente o mesmo resultado utilizando uma variável. Salve o arquivo
como “exemplo2.php” no diretório de documentos do Web Server.
-9-
DESENVOLVIMENTO WEB III - 7142
- 10 -
DESENVOLVIMENTO WEB III - 7142
- 11 -
DESENVOLVIMENTO WEB III - 7142
- 12 -
DESENVOLVIMENTO WEB III - 7142
4 – TIPOS DE DADOS
Tipos Suportados
PHP suporta os seguintes tipos de dados:
• Inteiro
• Ponto flutuante
• String
• Array
• Objeto
• Booleano
PHP utiliza checagem de tipos dinâmica, ou seja, uma variável pode conter
valores de diferentes tipos em diferentes momentos da execução do script. Por este
motivo não é necessário declarar o tipo de uma variável para usá-la. O interpretador
PHP decidirá qual o tipo daquela variável, verificando o conteúdo em tempo de
execução.
Ainda assim, é permitido converter os valores de um tipo para outro desejado,
utilizando a função settype.
Uma variável pode ter um valor em ponto flutuante com atribuições que sigam
as seguintes sintaxes:
- 13 -
DESENVOLVIMENTO WEB III - 7142
Strings
Strings podem ser atribuídas de duas maneiras:
Exemplo7.php
Exemplo8.php
A saída desse script será "---Brasil--" (com uma quebra de linha no final).
- 14 -
DESENVOLVIMENTO WEB III - 7142
Sintaxe Significado
\n Nova linha
\r Retorno de carro (semelhante a \n)
\t Tabulação horizontal
\\ A própria barra ( \ )
\$ O símbolo $
\’ Aspa simples
\” Aspa dupla
Arrays
Arrays em PHP podem ser observados como mapeamentos ou como vetores
indexados. Mais precisamente, um valor do tipo array é um dicionário onde os
índices são as chaves de acesso. Vale ressaltar que os índices podem ser valores de
qualquer tipo e não somente inteiros. Inclusive, se os índices forem todos inteiros,
estes não precisam formar um intervalo contínuo.
Como a checagem de tipos em PHP é dinâmica, valores de tipos diferentes
podem ser usados como índices de array, assim como os valores mapeados também
podem ser de diversos tipos.
Exemplo9.php
Exemplo10.php
- 15 -
DESENVOLVIMENTO WEB III - 7142
Listas
As listas são utilizadas em PHP para realizar atribuições múltiplas. Através de
listas é possível atribuir valores que estão num array para variáveis. Vejamos o
exemplo:
Exemplo:
- 16 -
DESENVOLVIMENTO WEB III - 7142
Objetos
Um objeto pode ser inicializado utilizando o comando new para instanciar uma
classe para uma variável.
exemplo12.php
Booleanos
Este é o tipo mais fácil. Um booleano expressa um valor de verdade. Ele pode ser
TRUE ou FALSE. Nota: O tipo booleano foi introduzido no PHP 4.
Sintaxe:
Para especificar um literal booleano, use as palavras chave TRUE ou FALSE. Ambas
são insensitivas ao caso.
<?php
$teste = True; // assimila o valor TRUE para a variável $teste
?>
Usualmente você pode utilizar algum tipo de operador que retorne um valor
booleano, e passá-lo para uma estrutura de controle.
<?php
// == é um operador que testa igualdade e retorna um booleano
- 17 -
DESENVOLVIMENTO WEB III - 7142
if ($acao == "mostrar_versao") {
echo "A versão é 1.25";
}
?>
Aviso: Sempre é usado o valor 0 (zero) para representar o estado FALSE, e qualquer
valor diferente de zero (geralmente 1) para representar o estado TRUE.
-1 é considerado TRUE, como qualquer valor não zero (negativos ou positivos)!
Transformação de Tipos
A transformação de tipos em PHP pode ser feita das seguintes maneiras:
Coerções
Quando ocorrem determinadas operações (“+”, por exemplo) entre dois
valores de tipos diferentes, o PHP converte o valor de um deles automaticamente
(coerção). É interessante notar que se o operando for uma variável, seu valor não
será alterado.
O tipo para o qual os valores dos operandos serão convertidos é determinado
da seguinte forma: Se um dos operandos for float, o outro será convertido para float,
senão, se um deles for integer, o outro será convertido para integer.
Exemplo:
Como podemos notar, o PHP converte string para integer ou double mantendo
o valor. O sistema utilizado pelo PHP para converter de strings para números é
o seguinte:
- É analisado o início da string. Se contiver um número, ele será
avaliado. Senão, o valor será 0 (zero);
- O número pode conter um sinal no início (“+” ou “-“);
- Se a string contiver um ponto em sua parte numérica a ser
analisada, ele será considerado, e o valor obtido será double;
- Se a string contiver um “e” ou “E” em sua parte numérica a ser
analisada, o valor seguinte será considerado como expoente da base
10, e o valor obtido será double;
Exemplos:
Exemplos:
A função settype converte uma variável para o tipo especificado, que pode ser
“integer”, “double”, “string”, “array” ou “object”. Exemplo:
- 19 -
DESENVOLVIMENTO WEB III - 7142
5 – CONSTANTES
Constantes Pré-Definidas
O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o
Sistema Operacional do servidor, o arquivo em execução, e diversas outras
informações. Para ter acesso a todas as constantes pré-definidas, pode-se utilizar a
função phpinfo(), que exibe uma tabela contendo todas as constantes pré-definidas,
assim como configurações da máquina, sistema operacional, servidor http e versão
do PHP instalada (exemplo13.php):
Definindo Constantes
Para definir constantes utiliza-se a função define. Uma vez definido, o valor
de uma constante não poderá mais ser alterado. Uma constante só pode
conter valores escalares, ou seja, não pode conter nem um array nem um objeto. A
assinatura da função define é a seguinte:
bool define ( string $name , mixed $value [, bool $case_insensitive ] );
A função retorna TRUE se for bem-sucedida. Veja um exemplo de sua
utilização a seguir (exemplo14.php):
- 20 -
DESENVOLVIMENTO WEB III - 7142
6 – OPERADORES
Aritméticos
Só podem ser utilizados quando os operandos são números (integer ou float).
Se forem de outro tipo, terão seus valores convertidos antes da realização da
operação.
+ adição
- subtração
* multiplicação
/ divisão
% Módulo (Resto da Divisão)
Exemplo15.php:
- 21 -
DESENVOLVIMENTO WEB III - 7142
De Strings
Só há um operador exclusivo para strings:
. concatenação
Exemplo16.php:
Observe no exemplo acima que será exibido apenas 01 (um) espaço entre a
variável $a e a variável $b.
De Atribuição
Existe um operador básico de atribuição e diversos derivados. Sempre
retornam o valor atribuído. No caso dos operadores derivados de atribuição, a
operação é feita entre os dois operandos, sendo atribuído o resultado para o
primeiro.
= atribuição simples
+= atribuição com adição
-= atribuição com subtração
*= atribuição com multiplicação
/= atribuição com divisão
%= atribuição com módulo
.= atribuição com concatenação
Exemplo17.php:
- 22 -
DESENVOLVIMENTO WEB III - 7142
Bit a Bit
Comparam dois números bit a bit.
Exemplo Nome Resultado
Os bits que estão ativos tanto em $a
$a & $b E
quanto em $b são ativados.
Os bits que estão ativos em $a ou
$a | $b OU
em $b são ativados.
Os bits que estão ativos em $a ou
$a ^ $b XOR em $b, mas não em ambos, são
ativados.
Os bits que estão ativos em $a não
~ $a NÃO
são ativados, e vice-versa.
Desloca os bits de $a $b passos para
Deslocamento à
$a << $b a esquerda (cada passo significa
esquerda
"multiplica por dois")
Desloca os bits de $a $b passos para
Deslocamento à
$a >> $b a direita (cada passo significa "divide
direita
por dois")
Exemplo18.php:
Lógicos
Verdadeiro se tanto
$a && $b E $a quanto $b são
verdadeiros.
Verdadeiro se $a ou
$a || $b OU
$b são verdadeiros.
Existem dois operadores para “e” e para “ou” porque eles têm diferentes
posições na ordem de precedência.
Exemplo19.php:
Comparação
As comparações são feitas entre os valores contidos nas variáveis, e não as
referências. Sempre retornam um valor booleano.
Exemplo Nome Resultado
Verdadeiro (TRUE) se $a é igual a
$a == $b Igual
$b.
Verdadeiro (TRUE) se $a é igual a
$a === $b Idêntico $b, e eles são do mesmo tipo
(introduzido no PHP4).
$a != $b Diferente Verdadeiro se $a não é igual a $b.
$a <> $b Diferente Verdadeiro se $a não é igual a $b.
Verdadeiro de $a não é igual a $b,
$a !== $b Não idêntico ou eles não são do mesmo tipo
(introduzido no PHP4).
Verdadeiro se $a é estritamente
$a < $b Menor que
menor que $b.
Verdadeiro se $a é estritamente
$a > $b Maior que
maior que $b.
Verdadeiro se $a é menor ou igual
$a <= $b Menor ou igual
a $b.
Verdadeiro se $a é maior ou igual a
$a >= $b Maior ou igual
$b.
Obs: $a == $b (é Comparação) $a = $b (é Atribuição)
- 24 -
DESENVOLVIMENTO WEB III - 7142
De Incremento e Decremento
++ incremento
-- decremento
- 25 -
DESENVOLVIMENTO WEB III - 7142
- 26 -
DESENVOLVIMENTO WEB III - 7142
7 – ESTRUTURAS DE CONTROLE
As estruturas que veremos a seguir são comuns para as linguagens de
programação imperativas, bastando, portanto, descrever a sintaxe de cada uma
delas, resumindo o funcionamento.
Blocos
Exemplo:
if ($x == $y)
comando1;
comando2;
Comandos de Seleção
Também chamados de condicionais, os comandos de seleção permitem
executar comandos ou blocos de comandos com base em testes feitos durante a
execução.
if
O mais trivial dos comandos condicionais é o if. Ele testa a condição e executa
o comando indicado se o resultado for true. Ele possui duas sintaxes:
if (expressão):
if (expressão) comando;
comando; ...
comando;
endif;
- 27 -
DESENVOLVIMENTO WEB III - 7142
if (expressão)
comando;
else
comando;
if (expressao1)
comando1;
else
if (expressao2)
comando2;
else
if (expressao3)
comando3;
else
comando4;
Foi criado o comando, também opcional elseif. Ele tem a mesma função de
um else e um if usados seqüencialmente, como no exemplo acima. Num mesmo if
podem ser utilizados diversos elseif’s, ficando essa utilização a critério do
programador, que deve zelar pela legibilidade de seu script.
Veja o exemplo21.php:
- 28 -
DESENVOLVIMENTO WEB III - 7142
switch
O comando switch atua de maneira semelhante a uma série de comandos if
na mesma expressão. Freqüentemente o programador pode querer comparar uma
variável com diversos valores, e executar um código diferente a depender de qual
valor é igual ao da variável. Quando isso for necessário, deve-se usar o comando
switch. O exemplo seguinte mostra dois trechos de código que fazem a mesma coisa,
sendo que o primeiro utiliza uma série de if’s e o segundo utiliza switch:
if ($i == 0)
print “i é igual a zero”;
elseif ($i == 1)
print “i é igual a um”;
elseif ($i == 2)
print “i é igual a dois”;
switch ($i) {
case 0:
print “i é igual a zero”;
break; //se não colocar o break, quando achar uma condição que satisfaça,
// sai executando todos os blocos de comandos
case 1:
print “i é igual a um”;
break;
case 2:
print “i é igual a dois”;
break;
}
- 29 -
DESENVOLVIMENTO WEB III - 7142
switch ($i) {
case 0:
print “i é igual a zero”;
case 1:
print “i é igual a um”;
case 2:
print “i é igual a dois”;
}
switch ($s) {
case “casa”:
print “A casa é amarela”;
case “arvore”:
print “a árvore é bonita”;
case “lampada”:
print “joao apagou a lampada”;
}
Veja o exemplo22.php:
- 30 -
DESENVOLVIMENTO WEB III - 7142
Comandos de Repetição
while
O while é o comando de repetição (laço) mais simples. Ele testa uma condição
e executa um comando, ou um bloco de comandos, até que a condição testada seja
falsa. Assim como o if, o while também possui duas sintaxes alternativas:
$i = 1;
while ($i <=10)
print $i++;
Veja o exemplo23.php:
- 31 -
DESENVOLVIMENTO WEB III - 7142
do... while
O laço do..while funciona de maneira bastante semelhante ao while, com a
simples diferença que a expressão é testada ao final do bloco de comandos. O laço
do..while possui apenas uma sintaxe, que é a seguinte:
do {
<comando>
...
<comando>
} while (<expressao>);
O exemplo utilizado para ilustrar o uso do while pode ser feito da seguinte
maneira utilizando o do.. while:
$i = 0;
do {
print ++$i;
} while ($i < 10);
Veja o exemplo24.php:
- 32 -
DESENVOLVIMENTO WEB III - 7142
for
O tipo de laço mais complexo é o for. Para os que programam em C, C++ ou
Java, a assimilação do funcionamento do for é natural. Mas para aqueles que estão
acostumados a linguagens como Pascal, há uma grande mudança para o uso do for.
As duas sintaxes permitidas são:
for (<inicializacao>;<condicao>;<incremento>)
<comando>;
for (<inicializacao>;<condicao>;<incremento>) :
<comando>;
...
<comando>;
endfor;
<inicializacao>
while (<condicao>) {
comandos
...
<incremento>
}
Veja o exemplo25.php:
- 33 -
DESENVOLVIMENTO WEB III - 7142
foreach
Desde a versão 4, o PHP trás o construtor foreach que é uma função que
permite uma navegação muito fácil e simplificada para se “navegar” por um array. As
duas sintaxes permitidas são:
ou
A segunda forma faz a mesma coisa, mas com uma diferença: além do valor
do elemento corrente do array ser atribuído à variável $elemento, a chave (ou
índice) do elemento atual é atribuído à variável $chave. Veja o exemplo26.php
abaixo:
- 34 -
DESENVOLVIMENTO WEB III - 7142
Este exemplo mostrará todas as chaves (ou índices) e valores do array $a, e
terá o seguinte resultado:
$a [um] => 1.
$a [dois] => 2.
$a [tres] => 3.
alice
aline
alba
amélia
anna
- 35 -
DESENVOLVIMENTO WEB III - 7142
OU
0) alice
1) aline
2) alba
nome4) amélia
3) anna
Quebra de Fluxo
Break
O comando break pode ser utilizado em laços de do, for e while, além do uso
já visto no comando switch. Ao encontrar um break dentro de um desses laços, o
interpretador PHP pára imediatamente a execução do laço, seguindo normalmente o
fluxo do script.
while ($x > 0) {
...
if ($x == 20) {
echo “erro! x = 20”;
break;
...
}
No trecho de código acima, o laço while tem uma condição para seu término
normal ($x > 0), mas foi utilizado o break para o caso de um término não previsto
no início do laço. Assim o interpretador seguirá para o comando seguinte ao laço.
- 36 -
DESENVOLVIMENTO WEB III - 7142
Continue
O comando continue também deve ser utilizado no interior de laços, e
funciona de maneira semelhante ao break, com a diferença que o fluxo ao invés de
sair do laço volta para o início dele. Vejamos o exemplo30.php:
- 37 -
DESENVOLVIMENTO WEB III - 7142
8 – Funções
Definindo Funções
A sintaxe básica para definir uma função é:
Qualquer código PHP válido pode estar contido no interior de uma função.
Como a checagem de tipos em PHP é dinâmica, o tipo de retorno não deve ser
declarado, sendo necessário que o programador esteja atento para que a função
retorne o tipo desejado.
Valor de Retorno
Toda função pode opcionalmente retornar um valor, ou simplesmente
executar os comandos e não retornar valor algum.
Não é possível que uma função retorne mais de um valor, mas é permitido
fazer com que uma função retorne um valor composto, como listas ou arrays.
Argumentos
É possível passar argumentos para uma função. Eles devem ser declarados
logo após o nome da função, entre parênteses, e tornam-se variáveis pertencentes
ao escopo local da função. A declaração do tipo de cada argumento também é
utilizada apenas para efeito de documentação.
exemplo31.php:
- 38 -
DESENVOLVIMENTO WEB III - 7142
Vamos escrever agora uma função que retorna a soma de dois valores. Veja o
exemplo33.php:
- 39 -
DESENVOLVIMENTO WEB III - 7142
- 40 -
DESENVOLVIMENTO WEB III - 7142
É bom lembrar que quando a função tem mais de um parâmetro, o que tem
valor default deve ser declarado por último (exemplo37.php):
- 41 -
DESENVOLVIMENTO WEB III - 7142
Contexto
O contexto é o conjunto de variáveis e seus respectivos valores num
determinado ponto do programa. Na chamada de uma função, ao iniciar a execução
do bloco que contém a implementação da mesma é criado um novo contexto,
contendo as variáveis declaradas dentro do bloco, ou seja, todas as variáveis
utilizadas dentro daquele bloco serão eliminadas ao término da execução da função.
Escopo
O escopo de uma variável em PHP define a porção do programa onde ela
pode ser utilizada. Na maioria dos casos todas as variáveis têm escopo global.
Entretanto, em funções definidas pelo usuário um escopo local é criado. Uma
variável de escopo global não pode ser utilizada no interior de uma função sem que
haja uma declaração. Exemplo38.php:
O trecho anterior não produzirá saída alguma, pois a variável $var é de escopo
global, e não pode ser referida num escopo local, mesmo que não haja outra com
nome igual que cubra a sua visibilidade. Para que o script funcione da forma
desejada, a variável global a ser utilizada deve ser declarada. Exemplo39.php:
- 42 -
DESENVOLVIMENTO WEB III - 7142
Uma declaração “global” pode conter várias variáveis, separadas por vírgulas.
Uma outra maneira de acessar variáveis de escopo global dentro de uma função é
utilizando um array pré-definido pelo PHP cujo nome é $GLOBALS. O índice para a
variável referida é o proprio nome da variável, sem o caracter $. O exemplo acima e
o abaixo (exemplo40.php) produzem o mesmo resultado:
- 43 -
DESENVOLVIMENTO WEB III - 7142
Funções do PHP
DATA/HORA
- 44 -
DESENVOLVIMENTO WEB III - 7142
Exercício: Monte uma função em PHP para imprimir a data atual dinamicamente
conforme texto a seguir: Juiz de Fora – MG, Sexta-Feira, 16 de Setembro de 2016.
MATEMÁTICAS
- 45 -
DESENVOLVIMENTO WEB III - 7142
STRING
- 46 -
DESENVOLVIMENTO WEB III - 7142
9 – Variáveis
O Modificador static
Uma variável estática é visível num escopo local, mas ela é inicializada apenas
uma vez e seu valor não é perdido quando a execução do script deixa esse escopo.
Veja o exemplo45.php:
O último comando da função é inútil, pois assim que for encerrada a execução
da função a variável $a perde seu valor. Já no exemplo46.php seguinte, a cada
chamada da função a variável $a terá seu valor impresso e será incrementada:
1
É uma função que invoca a si própria, ou invoca outra função, e na seqüência das diversas sub-
funções, uma das sub-funções invoca a primeira função.
- 47 -
DESENVOLVIMENTO WEB III - 7142
Em outras palavras, uma variável declarada como static tem o mesmo “tempo
de vida” que uma variável global, porém sua visibilidade é restrita ao escopo local
em que foi declarada e só é recuperada após a declaração.
Variáveis Variáveis
(Variáveis geradas dinamicamente)
O PHP tem um recurso conhecido como variáveis variáveis, que consiste em
variáveis cujos nomes também são variáveis. Sua utilização é feita através do duplo
cifrão ($$). Vejamos o exemplo47.php:
Variáveis de Ambiente
O PHP possui diversas variáveis de ambiente, como a
$_SERVER['PHP_SELF'], por exemplo, que contém o nome e o path do próprio
arquivo. Algumas outras contém informações sobre o navegador do usuário, o
servidor http, a versão do PHP e diversas informações. Para ter uma listagem de
todas as variáveis e constantes de ambiente e seus respectivos conteúdos, deve-se
utilizar a função phpinfo().
- 48 -
DESENVOLVIMENTO WEB III - 7142
Por causa da tipagem dinâmica utilizada pelo PHP, nem sempre é possível
saber qual o tipo de uma variável em determinado instante se não contar com a
ajuda de algumas funções que ajudam a verificar isso. A verificação pode ser feita de
duas maneiras:
A palavra “mixed” indica que a variável $var pode ser de diversos tipos.
Valor Retornado: Os possíveis valores retornados pela função são:
• "boolean"
• "integer"
• "double" (por razões históricas "double" é retornado no caso de float, e
não simplesmente "float")
• "string"
• "array"
• "object"
• "resource"
• "NULL"
• "unknown type"
Exemplo48.php
- 49 -
DESENVOLVIMENTO WEB III - 7142
Todas essas funções retornam true se a variável for daquele tipo, e false em
caso contrário.
Exemplo49.php
Veja o exemplo50.php
- 50 -
DESENVOLVIMENTO WEB III - 7142
A função isset
Possui o seguinte protótipo:
Retorna true se a variável estiver setada (ainda que com uma string vazia ou
o valor zero), e false em caso contrário.
A função empty
Possui a seguinte assinatura:
- 51 -
DESENVOLVIMENTO WEB III - 7142
Cadastro de clientes
Área do nosso sistema para a inclusão de novos clientes. Abaixo, segue a estrutura da nossa
tabela.
tb_clientes
- id_cli - Número auto–incremento, vai ser a nossa chave primária (PK)
- inclusao_cli - Data e horário do cadastro do cliente
- nome_cli - Nome completo
- end_cli - Endereço
- bairro_cli - Bairro
- email_cli - Email
- tel_cli - Telefone
- cidade_cli - Cidade
- estado_cli - Código do Estado (FK)
tb_user – Essa tabela contém os usuários que tem permissão para mexer na área
administrativa
- id_user - Número auto–incremento, vai ser a nossa chave primária (PK)
- apelido - apelido do usuário que vai ter acesso ao sistema.
- senha - senha do usuário que vai ter acesso ao sistema.
Criando as tabelas
Se você usa o Windows, aconselho você a baixar um software de gerenciamento de banco de
dados, nesse caso o PHPMyAdmin (http://www.phpmyadmin.net/) que é uma ótima ferramenta para
manipular base de dados MySQL. No WAMPSERVER já existe pré-instalado o PHPMyAdmin.
- 52 -
DESENVOLVIMENTO WEB III - 7142
Antes de criarmos as tabelas, devemos criar o nosso Database, para isso digite o seguinte
comando:
Como vocês podem observar eu criei um database chamado projeto, abaixo segue as tabelas
que farão parte da nossa base de dados.
tb_clientes - Tabela com os clientes cadastrados no sistema
tb_estados - Tabela com os estados do Brasil
tb_user - Usuários que tem permissão para entrar na área administrativa do sistema.
- 54 -
DESENVOLVIMENTO WEB III - 7142
exit;
}
//2º passo - Seleciona o Banco de Dados
if(!($con=mysql_select_db($dbname,$id))) {
echo " <p align=\"center\"><big><strong>Não foi possível estabelecer uma
conexão com o Banco de Dados informado. Favor contatar o Administrador.
</strong></big></p>";
exit;
}
?>
A conexão com o MySQL acima mostrada, é para quem está trabalhando localmente na
máquina (localhost).
Área Administrativa
É a área responsável por fazer o controle dos clientes cadastrados, ou seja, nela vamos poder
incluir, alterar, excluir e buscar qualquer cliente que esteja cadastro em nossa base de dados.
Vamos fazer uso das sessões em PHP nessa área (método para gerenciamento de usuários
que está disponível a partir da versão 4 do PHP), pois precisamos restringir o acesso a essa área
apenas para pessoas que tenham permissão.
//INICIALIZA A SESSÃO
session_start();
- 55 -
DESENVOLVIMENTO WEB III - 7142
//DESTRÓI AS VARIÁVEIS
unset($_SESSION[id_projeto]);
unset($_SESSION[apelido_projeto]);
unset($_SESSION[senha_projeto]);
//INICIALIZA A SESSÃO
session_start();
</head>
<body bgcolor="#FFFFFF" text="#000000">
<center>
<form name="frm_login" method="post" action="<?php echo
basename($_SERVER['PHP_SELF']); ?>">
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" align="center"><b><font face="Arial"
size="3">IDENTIFICAÇÃO</font></b></td>
</tr>
<tr>
<td width="33%" height="25"><font face="Arial"
size="2">Apelido:</font></td>
<td width="67%" height="25"><font face="Arial" size="2"><input
type="text" name="apelido_login"></font></td>
</tr>
<tr>
<td width="33%" height="25"><font face="Arial"
size="2">Senha:</font></td>
<td width="67%" height="25"><font face="Arial" size="2"><input
type="password" name="senha_login"></font></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="entrar" value="Entrar
>>"></td>
</tr>
</table>
</form>
</center>
<script>document.frm_login.apelido_login.focus()</script>
</body>
</html>
Essa página vai mostrar um formulário com dois campos: um de apelido e outro de senha.
No action do form temos <?php echo basename($_SERVER['PHP_SELF']); ?>, isso quer dizer que os
dados serão enviados para a mesma página.
Note que no começo do código temos um if(($apelido_login) AND ($senha_login)). Depois
que digitamos o apelido e a senha e clicamos no botão Entrar >>, vamos cair nessa condição que
vai verificar se o usuário e a senha foram digitados. Em seguida é verificado se estes dados existem
em nosso banco de dados. Caso exista é criada uma sessão e nela são registradas 3 variáveis, sendo
- 57 -
DESENVOLVIMENTO WEB III - 7142
- 58 -
DESENVOLVIMENTO WEB III - 7142
<html>
<head>
<title>Tutorial UNIVERSO</title>
</head>
<body>
<table width="60%" border="0" cellspacing="0" cellpadding="0"
align="center">
<tr>
<td height="60"><div align="center"><font face="Arial" size="4"><b>Menu
Principal</b></font></div></td>
</tr>
</table>
<br />
<p align="center">
<font face=Arial size=2>
- <a href="cadclientes.php?acao=entrar">Cadastrar Clientes</a><br /><br />
- <a href="gerclientes.php">Gerenciar Clientes</a><br /><br />
- <a href="pesqclientes_a.php">Pesquisar Clientes</a><br />
</font>
</p>
</body>
</html>
- 59 -
DESENVOLVIMENTO WEB III - 7142
<tr>
<td height="60">
<div align="center"><font face="Arial"
size="4"><b>Cadastro de Clientes</b></font></div></td>
</tr>
</table>
<br />
<?php
//RECEBE OS DADOS DA URL
$acao = $_GET[acao];
$erros++;
$html_erros = $html_erros."<br />Telefone";
}
if($cidade_cli == '') {
$erros++;
$html_erros = $html_erros."<br />Cidade";
}
if($estado_cli == 0) {
$erros++;
$html_erros = $html_erros."<br />Estado";
}
if($erros == 0) { //Se não tiver nenhum erro, faz a inclusão
$sql = mysql_query("INSERT INTO
tb_clientes(inclusao_cli,nome_cli,end_cli,bairro_cli,email_cli,
tel_cli,cidade_cli,estado_cli)
VALUES(now(),'$nome_cli','$end_cli','$bairro_cli',
'$email_cli','$tel_cli','$cidade_cli','$estado_cli')")
or die("Erro no comando SQL:".mysql_error());
echo "<div align=center><font face=Arial size=2>Cliente cadastrado com
Sucesso!!</font></div><br /><br />";
} //fecha $erros == 0
else {
echo "<div align=center><font face=Arial
size=2><b> ATENÇÃO </b><br /><br />Foram encontrados
<b>$erros</b>
erro(s) no cadastro do
cliente:<br /><b>$html_erros</b>
<br /><br /><a href='javascript:history.go(-1)'><<
Voltar</a></font></div><br /><br />";
}//fecha else
} /*fecha acao= cadastrar*/ ?>
<?php
if($acao == 'entrar') { /*Mostra o formulário de cadastro de clientes */
$sql_estados = mysql_query("SELECT * FROM tb_estados ORDER BY estado")
or die("ERRO no comando SQL:".mysql_error());
?>
<form name="frm_clientes" method="post" action="<?php echo
basename($_SERVER['PHP_SELF']); ?>?acao=cadastrar">
<table width="500" border="0" cellspacing="0" cellpadding="0"
align="center">
<tr>
- 61 -
DESENVOLVIMENTO WEB III - 7142
</select></font></td>
</tr>
<tr>
<td height="25" colspan="2">
<div align="center">
<input type="submit" name="cadastrar" value="Cadastrar cliente
>>"></div></td>
</tr>
</table>
</form>
<script>document.frm_clientes.nome_cli.focus()</script>
<?} /*fecha acao=entrar */?>
<div align=center><font face=Arial size=2>
[ <a href='opcoes.php'>Voltar para o menu principal</a> ]</font>
</div>
</body>
</html>
Quando clicamos na opção para cadastrar cliente na página opcoes.php, caímos na página
cadclientes.php?acao=entrar, que nada mais é, que a página que contém o formulário de cadastro e a
rotina para a inclusão dos dados em nossa base de dados.
Como vocês podem observar acima temos uma condição depois do nome do arquivo:
cadclientes.php?acao=entrar. Vá até o código acima e procure uma linha if($acao==’entrar’).
Encontrou? É aí que começa a nossa página. Depois de ter preenchido todos os dados e clicarmos no
botão Cadastrar cliente >> seremos redirecionados para a mesma página, isso ocorre porque no
action do form temos o comando <?php echo basename($_SERVER['PHP_SELF']); ?>mais ele não
vem sozinho, ele está acompanhado do ?acao=cadastrar, encontramos aqui, mais uma condição.
Vá ao código acima e procure a linha if($acao==’cadastrar’). Como vocês podem observar,
recebemos os dados da url (GET) e do formulário (POST), fazemos uma verificação dos dados que
foram enviados, para ver se nenhum foi enviado em branco, caso algum dado seja enviado em branco
é mostrado uma mensagem de erro e pedimos para a pessoa retornar ao formulário e complementar
os dados que estão faltando.
Observe essa linha:
$sql = mysql_query("INSERT INTO
tb_clientes(inclusao_cli,nome_cli,end_cli,bairro_cli,email_cli,
tel_cli,cidade_cli,estado_cli)
VALUES(now(),'$nome_cli','$end_cli','$bairro_cli',
'$email_cli','$tel_cli','$cidade_cli','$estado_cli')")
or die("Erro no comando SQL:".mysql_error());
- 63 -
DESENVOLVIMENTO WEB III - 7142
<br />
</tr>
</table>
<br />
<form name="frm_pesq" method="post" action="<?echo $PHP_SELF?>">
<table width="700" border="0" cellspacing="1" cellpadding="0"
align="center">
<tr bgcolor="#6699CC">
<td colspan="2">
<div align="center"><font face="Arial"
size="2"><b>Pesquisa</b></font></div></td>
</tr>
<tr bgcolor="ebebeb">
<td width="32%" align="center"><font face="Arial" size="2">Nome a ser
procurado:</font></td>
<td width="68%"> <font face="Arial" size="2"><input type="text"
name="criterio" size="25">
<input type="submit" name="pesq" value="Pesquisar >>">
<input type="hidden" name="pesquisar" value="sim"></font></td>
</tr>
</table>
</form>
<script>document.frm_pesq.criterio.focus()</script>
<br />
<?if(mysql_num_rows($sql_cliente) > 0) {?>
<table width="700" border="0" cellspacing="1" cellpadding="0"
align="center">
<tr bgcolor="#6699CC">
<td colspan="5">
<div align="center"><font face="Arial" size="2"><b><font
color="#FFFFFF">Clientes cadastrados</font></b></font></div>
</td>
</tr>
<tr bgcolor="cccccc">
<td width="19%">
<div align="center"><b><font face="Arial" size="2">Data de
inclusão</font></b></div>
</td>
<td width="33%">
<div align="center"><b><font face="Arial" size="2">Cliente</font></b></div>
</td>
<td width="23%">
- 65 -
DESENVOLVIMENTO WEB III - 7142
<br />
<div align=center><font face=Arial size=2>
[ <a href='opcoes.php'>Voltar para o menu principal</a> ]</font>
</div>
</body>
</html>
- 72 -
DESENVOLVIMENTO WEB III - 7142
$id_cliente = $_GET[id_cliente];
Devemos agora substituir o trecho de código abaixo (próximo a linha 95) do mesmo arquivo
(gerclientes.php):
- 73 -
DESENVOLVIMENTO WEB III - 7142
<script language=javascript>
function verifyForm()
{
if(document.pesquisa.dtinicial.value == "") {
alert("A Data Inicial deverá ser digitada !!!");
document.pesquisa.dtinicial.focus();
return(false);
};
if(document.pesquisa.dtfinal.value == "") {
alert("A Data Final deverá ser digitada !!!");
document.pesquisa.dtfinal.focus();
return(false);
};
if(document.pesquisa.dtinicial.value.length<10) {
alert("A Data Inicial deve possuir 10 dígitos. Ex:
01/01/2015");
document.pesquisa.dtinicial.focus();
return(false);
};
if(document.pesquisa.dtfinal.value.length<10) {
alert("A Data Final deve possuir 10 dígitos. Ex:
30/06/2015");
document.pesquisa.dtfinal.focus();
return(false);
};
- 74 -
DESENVOLVIMENTO WEB III - 7142
return(true);
};
function mascara(o,f)
{
//alert("Cheguei na função!!!");
v_obj=o
v_fun=f
setTimeout("execmascara()",1)
}
function execmascara()
{
v_obj.value=v_fun(v_obj.value)
}
function mesano(v)
{
v=v.replace(/\D/g,"") //Remove tudo o que não é
dígito
v=v.replace(/(\d{2})(\d{1,4})$/,"$1/$2") //Coloca uma barra entre o
segundo e o terceiro dígito
return v
}
function masc_data(v)
{
- 75 -
DESENVOLVIMENTO WEB III - 7142
function processo(v)
{
v=v.replace(/\D/g,"") //Remove tudo o que não é
dígito
v=v.replace(/(\d{6})(\d{1,4})$/,"$1/$2") //Coloca uma barra entre o
quinto e o sexto dígito
return v
}
function soNumeros(v)
{
return v.replace(/\D/g,"")
}
</SCRIPT>
<br />
<table width="60%" border="0" cellspacing="0" cellpadding="0"
align="center">
<tr>
<td height="60">
<div align="center"><font face="Arial" size="4"><b>Pesquisar
Clientes</b></font></div>
</td>
</tr>
</table>
<br />
<font face="Arial">
<center>
- 76 -
DESENVOLVIMENTO WEB III - 7142
<br />
<div align=center><font face=Arial size=2>
[ <a href='opcoes.php'>Voltar para o menu principal</a> ]</font>
</div>
</body>
</html>
Agora que já temos o formulário de Pesquisa de Clientes criado, vamos montar o arquivo que
exibirá o resultado da pesquisa (pesqclientes.php):
Código fonte:
<?php
require("ver_sessao.php"); //Verifica se a sessão está ativa
require("conecta.php") //Conecta com a nosso banco de dados MySQL
?>
<html>
<head>
<title>Tutorial UNIVERSO - Relatório de Clientes</title>
</head>
<body>
- 78 -
DESENVOLVIMENTO WEB III - 7142
<script language="javascript">
function mudar_cor_over(celula){
celula.style.backgroundColor="#cccccc"
}
function mudar_cor_out(celula){
celula.style.backgroundColor="#ffffff"
}
</script>
<center>
<font size="+2" face="Arial Narrow"><b>Relatório de
Clientes</b></font>
</center>
<br />
<?php
//RECEBE OS DADOS DO FORMULÁRIO
$criterio = $_POST[criterio];
$campo = $_POST[campo];
$dtinicial = $_POST[dtinicial];
$dtfinal = $_POST[dtfinal];
$ordenar_por = $_POST[ordenar_por];
<?php
$sql = "SELECT id_cli,inclusao_cli,date_format(inclusao_cli,'%d/%m/%Y -
%H:%i') as inclusao_cli_formatado, nome_cli, end_cli, bairro_cli,
email_cli, tel_cli, cidade_cli, estado_cli, uf
FROM tb_clientes,tb_estados
- 79 -
DESENVOLVIMENTO WEB III - 7142
$sql_result=mysql_query($sql);
$numreg = mysql_numrows($sql_result);
$i = 0;
?>
<center>
<b>
<FONT SIZE=+1 FACE="Arial">
<?php
if ($campo == "nome_cli") {
$campo = "pelo Nome do Cliente";}
if ($campo == "end_cli") {
$campo = "pelo Endereço do Cliente";}
if ($campo == "bairro_cli") {
$campo = "pelo Bairro do Cliente";}
if ($campo == "email_cli") {
$campo = "pelo E-mail do Cliente";}
if ($campo == "tel_cli") {
$campo = "pelo Telefone do Cliente";}
if ($campo == "cidade_cli") {
$campo = "pela Cidade do Cliente";}
if ($campo == "uf") {
$campo = "pelo Estado do Cliente (Ex: MG)";}
if ($ordenar_por == "nome_cli") {
$ordenado_por_ext = "Ordenado pelo Nome do Cliente";}
if ($ordenar_por == "inclusao_cli") {
$ordenado_por_ext = "Ordenado pela Data de Inclusão do
Cliente";}
if ($ordenar_por == "bairro_cli,end_cli") {
$ordenado_por_ext = "Ordenado pelo Bairro / Endereço do
Cliente";}
<center>
<table border="1" cellspacing="3" cellpadding="3" width="800">
<tr>
<td>
<Center><B><FONT SIZE="-1" FACE="Arial">Nome do
Cliente</FONT></B></Center>
</td>
<td>
<Center><B><FONT SIZE="-1" FACE="Arial">E-
mail</FONT></B></Center>
</td>
<td>
<Center><B><FONT SIZE="-1"
FACE="Arial">Telefone</FONT></B></Center>
</td>
<td>
<Center><B><FONT SIZE="-1"
FACE="Arial">Endereço</FONT></B></Center>
</td>
<td>
<Center><B><FONT SIZE="-1"
FACE="Arial">Bairro</FONT></B></Center>
</td>
<td>
<Center><B><FONT SIZE="-1" FACE="Arial">Cidade /
Estado</FONT></B></Center>
</td>
<td>
<Center><B><FONT SIZE="-1" FACE="Arial">Data e Hora
de Cadastro</FONT></B></Center>
</td>
</tr>
<?php
- 81 -
DESENVOLVIMENTO WEB III - 7142
<?php
}
if ( mysql_num_rows($sql_result) == 0)
{
?>
<tr>
- 82 -
DESENVOLVIMENTO WEB III - 7142
<td COLSPAN="7">
<FONT SIZE=+1 FACE="Arial">
<center>Nenhum registro encontrado!</center>
</FONT>
</td>
</tr>
<?php
}
?>
</table>
</center>
<!--RODAPÉ DO RELATÓRIO-->
<br />
<center><a
HREF="javascript:self.print()">Imprimir</a>
<a HREF="javascript:self.close()">Fechar</A></center>
</body>
</html>
Vamos rodar o programa e verificar se tudo está funcionando perfeitamente.
Bom trabalho!!!
- 83 -
DESENVOLVIMENTO WEB III - 7142
ARQUIVO: index.php
Vamos fazer com que os nomes dos arquivos acessados não apareçam na barra de endereços.
Antes de salvar o arquivo abaixo como index.php, renomeie o arquivo index.php do seu projeto para
index_a.php
ARQUIVO: logout.php
<?
//INICIALIZA A SESSÃO
session_start();
//DESTRÓI AS VARIÁVEIS
unset($_SESSION[id_projeto]);
unset($_SESSION[apelido_projeto]);
unset($_SESSION[senha_projeto]);
unset($_SESSION[status_projeto]);
- 84 -
DESENVOLVIMENTO WEB III - 7142
ARQUIVO: functions.php
<?php
#******************************************************************#
#* Converte as palavras digitadas em minúscula para maiúscula #
#******************************************************************#
if($return=='lower') {
$text=strtolower($text);
for($i=0;$i<count($arrayLower);$i++) {
$text=str_replace($arrayUpper[$i], $arrayLower[$i], $text);
}
}
elseif($return=='upper') {
$text=strtoupper($text);
for($i=0;$i<count($arrayLower);$i++) {
$text=str_replace($arrayLower[$i], $arrayUpper[$i], $text);
}
}
return($text);
}
#********************************************************#
#* Encripta e Descripta Senhas #
#********************************************************#
##Encripta a senha
function encode($var) {
$var = base64_encode($var);
$var = base64_encode($var);
return($var);
}
##Retorna a senha na forma normal
function decode($var) {
$var = base64_decode($var);
$var = base64_decode($var);
return($var);
}
?>
- 85 -
DESENVOLVIMENTO WEB III - 7142
Sabemos que o usuário padrão do MySQL é root e a senha default é vazia (em
branco). Segue abaixo alguns passos para alterar esta senha padrão:
• Abra o PHPMyAdmin;
• Clique na aba Users;
• Clique em Privilégios;
• Ao lado direito do usuário root, clique no ícone “Editar Privilégios”;
• Role a página até encontrar a opção “Alterar Senha”;
• Marque a opção Senha e digite “universo” (minúsculo) duas vezes: na linha
de cima e na debaixo;
• Clique em Executar;
• Abra o arquivo config.inc.php que se encontra no diretório
c:/wamp/apps/phpmyadmin3.5.1/config.inc.php;
• Digite na linha 16 a Senha ‘universo’ (minúsculo) no lugar de ‘123456’ ou ‘ ’;
- 86 -
DESENVOLVIMENTO WEB III - 7142
11 - Introdução à Orientação a
Objetos em PHP
- 87 -
DESENVOLVIMENTO WEB III - 7142
- 88 -
DESENVOLVIMENTO WEB III - 7142
Encapsulamento
O encapsulamento é uma das principais técnicas que define a programação
Orientada a Objetos. Trata-se de um dos elementos que adicionam segurança à
aplicação em uma Programação Orientada a Objetos pelo fato de esconder as
propriedades, criando uma espécie de caixa preta.
A maior parte das linguagens Orientadas a Objetos implementam o
encapsulamento baseado em propriedades privadas. Essa atitude evita o acesso
direto a propriedade do objeto, adicionando uma outra camada de segurança à
aplicação.
Para fazermos um paralelo com o que vemos no mundo real, temos o
encapsulamento em outros elementos. Por exemplo, quando clicamos no botão ligar
da televisão, não sabemos o que está acontecendo internamente. Podemos então
dizer que os métodos que ligam a televisão estão encapsulados.
Herança
O reuso de código é uma das grandes vantagens da programação Orientada a
Objetos. Muito disso se dá por uma questão que é conhecida como herança. Essa
característica otimiza a produção da aplicação em tempo e linhas de código.
Para entendermos essa característica, vamos imaginar uma família: a criança,
por exemplo, está herdando características de seus pais. Os pais, por sua vez,
herdam algo dos avós, o que faz com que a criança também o faça, e assim
sucessivamente. Na Orientação a Objetos, a questão é exatamente assim. O objeto
abaixo na hierarquia irá herdar características de todos os objetos acima dele, seus
"ancestrais". A herança a partir das características do objeto mais acima é
considerada herança direta, enquanto as demais são consideradas heranças
- 89 -
DESENVOLVIMENTO WEB III - 7142
Polimorfismo
Outro ponto essencial na programação Orientada a Objetos é o chamado
polimorfismo. Na natureza, vemos animais que são capazes de alterar sua forma
conforme a necessidade, e é dessa ideia que vem o polimorfismo na Orientação a
Objetos. Como sabemos, os objetos filhos herdam as características e ações de seus
"ancestrais". Entretanto, em alguns casos, é necessário que as ações para um
mesmo método seja diferente. Em outras palavras, o polimorfismo consiste na
alteração do funcionamento interno de um método herdado de um objeto pai.
Como um exemplo, temos um objeto genérico "Eletrodoméstico". Esse objeto
possui um método, ou ação, "Ligar()". Temos dois objetos, "Televisão" e "Geladeira",
que não irão ser ligados da mesma forma. Assim, precisamos, para cada uma das
classes filhas, reescrever o método "Ligar()".
- 91 -
DESENVOLVIMENTO WEB III - 7142
- 93 -
DESENVOLVIMENTO WEB III - 7142
Métodos:
- Ligar
- Desligar
- Acelerar
- Frear
class Carro {
/*
* Primeiro Passo: Declarar os Atributos
*/
public $ano;
public $modelo;
public $cor;
public $fabricante;
- 94 -
DESENVOLVIMENTO WEB III - 7142
/*
* Segundo Passo: Criar os Métodos
* Para tornar mais didático, vamos criar um método
chamado MostraDados
*/
function MostraDados() {
echo "Ano: ".$this->ano; /* Toda vez que você
quiser referenciar um atributo dentro da própria classe,
utilize a instrução $this-> */
echo '<br>';
echo "Modelo: ".$this->modelo;
echo '<br>';
echo "Cor: ".$this->cor;
echo '<br>';
echo "Fabricante: ".$this->fabricante;
}
}
?>
Neste momento, nossa classe Carro (Carro.class.php) está pronta. Agora,
dentro do diretório c:/wamp/www/dw3/POO/01 vamos criar nosso objeto em
um arquivo chamado Objeto1.php com o código abaixo:
<?php
include('./Classes/Carro.class.php');
$carro->ano="2016";
$carro->cor="Amarelo";
$carro->fabricante="Chevrolet";
$carro->modelo="Camaro";
$carro->MostraDados();
?>
function Desligar() {
echo '<br><br>';
echo "Carro desligado!!! :(";
}
Agora, no objeto carro (Objeto1.php), acione os dois métodos criados na
classe Carro: o método Ligar e o método Desligar.
Via localhost do WampServer, acesse novamente o arquivo Objeto1.php e
veja se o mesmo está executando corretamente todos os métodos referenciados.
- 96 -
DESENVOLVIMENTO WEB III - 7142
Método Construtor:
O método __construct() dá a possibilidade ao usuário de sua classe passar
argumentos para o objeto durante o processo de criação do mesmo. Sua sintaxe é
function __construct
Obs: Antes da palavra construct temos 02 (dois) __ “underlines”.
class Carro {
/*
* Primeiro Passo: Declarar os Atributos
* Vamos utilizar a partir deste exemplo o padrão
CamelCase
*/
public $Ano;
public $Modelo;
public $Cor;
public $Fabricante;
- 97 -
DESENVOLVIMENTO WEB III - 7142
/*
* Segundo Passo: Criar os Métodos
* Vamos criar o Método Construtor
*/
function MostraDados() {
echo "Ano: ".$this->Ano; /* Toda vez que você
quiser referenciar um atributo dentro da própria classe,
utilize a instrução $this-> */
echo '<br>';
echo "Modelo: ".$this->Modelo;
echo '<br>';
echo "Cor: ".$this->Cor;
echo '<br>';
echo "Fabricante: ".$this->Fabricante;
echo '<br>';
}
}
?>
Neste momento, nossa classe Carro (Carro.class.php) está pronta. Agora,
dentro do diretório c:/wamp/www/dw3/POO/02 vamos criar nosso objeto em
um arquivo chamado Objeto1.php com o código abaixo:
<?php
include('./Classes/Carro.class.php');
$carro->MostraDados();
?>
- 99 -
DESENVOLVIMENTO WEB III - 7142
Método Destrutor:
O método __destruct() é responsável por limpar da memória os atributos
utilizados na execução da classe. Funciona como um finalizador e é executado ao
finalizarmos um objeto, ou seja, quando o objeto é desalocado da memória. Sua
sintaxe é function __destruct
Obs: Antes da palavra destruct temos 02 (dois) __ “underlines”.
No arquivo Carro.class.php, dentro da classe Carro, vamos criar o método
destrutor de acordo com o código abaixo:
function __destruct(){
echo '<br>';
echo "O Objeto carro foi destruido com
sucesso!!!";
}
Método Herança:
É um mecanismo que permite construir uma nova classe com base em
uma classe previamente existente, em que a nova classe herda
automaticamente todos os atributos, comportamentos e implementações da classe
pai.
Com a herança podemos reutilizar partes de códigos já definidas. Além da
agilidade, ela elimina a necessidade de duplicar ou reescrever o código.
- 100 -
DESENVOLVIMENTO WEB III - 7142
class Carro {
/*
* Primeiro Passo: Declarar os Atributos
* Vamos utilizar a partir deste exemplo o padrão
CamelCase
*/
public $Ano;
public $Modelo;
public $Cor;
public $Fabricante;
/*
* Segundo Passo: Criar os Métodos
*/
- 101 -
DESENVOLVIMENTO WEB III - 7142
function MostraDados() {
echo "Ano: ".$this->Ano; /* Toda vez que você
quiser referenciar um atributo dentro da própria classe,
utilize a instrução $this-> */
echo '<br>';
echo "Modelo: ".$this->Modelo;
echo '<br>';
echo "Cor: ".$this->Cor;
echo '<br>';
echo "Fabricante: ".$this->Fabricante;
echo '<br>';
}
}
?>
include('./Classes/Carro.class.php');
- 102 -
DESENVOLVIMENTO WEB III - 7142
$carro->MostraDados();
?>
Vamos supor que eu queira lançar no meu sistema o valor do IPVA e do IPI
dos carros. Aí vai entrar a parte de Herança. Para isso, vou criar uma nova classe
chamada CarroImpostos.class.php dentro do diretório
c:/wamp/www/dw3/POO/03/Classes. Esta classe será somente dos impostos
dos veículos. Quando eu for criar uma classe com herança, a primeira coisa que devo
fazer é chamar o arquivo da Classe Pai:
require_once './Carro.class.php';
Após feito isso, devo informar que a nova classe (CarroImpostos) será uma
extensão da classe Carro.
class CarroImpostos extends Carro{
require_once 'Carro.class.php';
/*
* Primeiro Passo: Declarar os Atributos
*/
public $IPVA;
- 103 -
DESENVOLVIMENTO WEB III - 7142
public $IPI;
/*
* Segundo Passo: Declarar os Métodos
*/
function MostraDados() {
parent::MostraDados(); // Imprime na tela os
atributos da Classe Pai
echo '<br>';
echo "Valor do IPVA: ".$this->IPVA;
echo '<br>';
echo "Valor do IPI: ".$this->IPI;
echo '<br>';
}
}
?>
- 104 -
DESENVOLVIMENTO WEB III - 7142
include('./Classes/CarroImpostos.class.php');
$carro = new
CarroImpostos('2014','Fusion','Preto','Ford',2000,300);
$carro->MostraDados();
?>
Método Polimorfismo:
O polimorfismo significa muitas formas ou algo que pode mudar sua forma.
Em termos de Programação Orientada a Objetos, polimorfismo pode ser entendido
como um único nome de classe ou métodos que represente um código diferente. Ou
seja, mesmo nome, porém código diferente (uma ação diferente).
class CarroFinanciamento {
/*
* Primeiro Passo: Declarar os Atributos
*/
public $ValorFinanciamento;
/*
* Segundo Passo: Declarar os Métodos
*/
- 106 -
DESENVOLVIMENTO WEB III - 7142
function __construct($ArgumentoValor){
$this->ValorFinanciamento = $ArgumentoValor;
}
function CalcularJuros() {
echo "Valor Financiamento (Carro): ".$this-
>ValorFinanciamento;
echo '<br>';
echo "Total Juros (Carro): ".$this-
>ValorFinanciamento * 0.1; // Taxa de 10% de Juros
echo '<br><br>';
}
}
?>
function CalcularJuros() {
echo "Valor Financiamento (Moto): ".$this-
>ValorFinanciamento;
echo '<br>';
echo "Total Juros (Moto): ".$this-
>ValorFinanciamento * 0.5; // Taxa de 50% de Juros
echo '<br><br>';
}
}
?>
- 107 -
DESENVOLVIMENTO WEB III - 7142
include('./Classes/CarroFinanciamento.class.php');
include('./Classes/MotoFinanciamento.class.php');
- 108 -
DESENVOLVIMENTO WEB III - 7142
método CalcularJuros desta nova classe terá uma taxa de 25% de juros sobre o
Valor Financiado. No arquivo Objeto1.php referencie o método CalcularJuros desta
nova classe.
Classe Abstrata: Nada mais é do que um modelo comum, que deve ser
seguido pelas classes filhas. Nunca é instanciada em um objeto, ou seja, não
existe isoladamente.
- 109 -
DESENVOLVIMENTO WEB III - 7142
/*
* Primeiro Passo: Declarar os Atributos
*/
public $Nome;
public $CPF;
public $RG;
public $Endereco;
public $Bairro;
public $Cidade;
public $UF;
public $CEP;
public $Telefone;
public $Celular;
public $Email;
- 110 -
DESENVOLVIMENTO WEB III - 7142
/*
* Segundo Passo: Declarar os Métodos
*/
$this->Nome = $ArgNome;
$this->CPF = $ArgCPF;
$this->RG = $ArgRG;
$this->Endereco = $ArgEndereco;
$this->Bairro = $ArgBairro;
$this->Cidade =$ArgCidade;
$this->UF = $ArgUF;
$this->CEP = $ArgCEP;
$this->Telefone = $ArgTelefone;
$this->Celular = $ArgCelular;
$this->Email = $ArgEmail;
/*
* Assinar Método Abstrato ContaCorrente
*/
}
?>
Vamos criar agora uma nova classe (esta classe não será abstrata!!!) chamada
ProdutoContaCorrente que será classe filha da classe Pessoas dentro do
diretório c:/wamp/www/dw3/POO/05/Classes.
Nome do arquivo: ProdutoContaCorrente.class.php
<?php
require_once 'Pessoas.class.php';
- 112 -
DESENVOLVIMENTO WEB III - 7142
/*
* Primeiro Passo: Declarar os atributos
*/
public $Banco;
public $Agencia;
public $Conta;
/*
* Segundo Passo: Declarar os Métodos
*/
$this->Banco = $ArgBanco;
$this->Agencia = $ArgAgencia;
$this->Conta = $ArgConta;
function MostrarPessoas() {
parent::MostrarPessoas();
}
- 113 -
DESENVOLVIMENTO WEB III - 7142
function ContaCorrente(){
echo '<br>';
echo "Dados da Conta Corrente";
echo '<br>';
echo "Banco: ". $this->Banco;
echo '<br>';
echo "Agencia: ". $this->Agencia;
echo '<br>';
echo "Conta Corrente: ". $this->Conta;
}
}
?>
include('./Classes/ProdutoContaCorrente.class.php');
- 114 -
DESENVOLVIMENTO WEB III - 7142
?>
- 115 -
DESENVOLVIMENTO WEB III - 7142
public $ano;
public $Modelo;
public $Cor;
public $Fabricante;
/*
* Segundo Passo: Declarar os Métodos
*/
function MostraDados() {
echo "Ano: ". $this->Ano;
echo '<br>';
echo "Modelo: ". $this->Modelo;
echo '<br>';
echo "Cor: ". $this->Cor;
echo '<br>';
echo "Fabricante: ". $this->Fabricante;
echo '<br>';
}
}
?>
include './Classes/Carro.class.php';
?>
require_once 'Carro.class.php';
/*
* Primeiro Passo: Declarar os Atributos
*/
public $IPVA;
public $IPI;
/*
* Segundo Passo: Declarar os Métodos
- 117 -
DESENVOLVIMENTO WEB III - 7142
*/
function MostraDados() {
parent::MostraDados(); // Imprime na tela os
atributos da Classe Pai
echo '<br>';
echo "Valor do IPVA: ".$this->IPVA;
echo '<br>';
echo "Valor do IPI: ".$this->IPI;
echo '<br>';
}
}
?>
include('./Classes/CarroImpostos.class.php');
$carro = new
CarroImpostos('2014','Fusion','Preto','Ford',2000,300);
$carro->MostraDados();
?>
Métodos Finais: Um método final não pode ser estendido e obviamente não
pode ser abstrato, pois métodos abstratos foram feitos para serem estendidos e
declarados na classe filha.
Para declarar um método como final basta usar a palavra reservada final
antes da palavra function.
- 119 -
DESENVOLVIMENTO WEB III - 7142
Constantes
Uma constante é algo que mantém seu valor fixo, ou seja, sem alterações. A
declaração de constantes é feita através da palavra chave const. Para acessar
- 120 -
DESENVOLVIMENTO WEB III - 7142
/*
* Informações de Versões de Aplicativos
*/
?>
Agora vamos criar outra classe, filha da classe Versoes, com o nome de
Aplicativos (Aplicativos.class.php), com o código abaixo:
<?php
include 'Versoes.class.php';
- 121 -
DESENVOLVIMENTO WEB III - 7142
/*
* Primeiro Passo: Declarar os Atributos e as
Constantes
*/
public $NomeAplicativo;
/*
* Segundo Passo: Declarar os Métodos
*/
function __construct($ArgumentoNomeAplicativo) {
$this->NomeAplicativo = $ArgumentoNomeAplicativo;
function MostraDados(){
echo "Nome Aplicativo: ". $this->NomeAplicativo;
// Usei o $this-> porque estou referenciando um atributo
dentro da própria classe
echo '<br>';
echo "Tipo de Licenca: ". self::TipoLicenca; //
Usei o self:: porque estou referenciando uma constante dentro
da própria classe
echo '<br>';
echo "Versao: ". Versoes::Versao;
echo '<br>';
- 122 -
DESENVOLVIMENTO WEB III - 7142
}
?>
- 123 -
DESENVOLVIMENTO WEB III - 7142
/*
* Propriedade Estática
*/
/*
* Método Estático
*/
}
?>
/*
* Acionar meu método estático
*/
/*
* Acessar a propriedade estática
*/
?>
- 125 -
DESENVOLVIMENTO WEB III - 7142
/*
* Primeiro Passo: Declarar os Atributos
*/
public $Id;
public $NomeCarro;
public $Valor;
public $Fabricante;
/*
* Segundo Passo: Declarar os Métodos
*/
function __construct($ArgumentoId,
$ArgumentoNomeCarro, $ArgumentoValor, $ArgumentoFabricante) {
$this->Id = $ArgumentoId;
$this->NomeCarro = $ArgumentoNomeCarro;
$this->Valor = $ArgumentoValor;
- 126 -
DESENVOLVIMENTO WEB III - 7142
$this->Fabricante = $ArgumentoFabricante;
}
}
?>
/*
* Primeiro Passo: Declarar os Atributos
*/
public $Id;
public $NomeFantasia;
public $Telefone;
public $Email;
/*
* Segundo Passo: Declarar os Métodos
*/
function __construct($ArgumentoId,
$ArgumentoNomeFantasia, $ArgumentoTelefone, $ArgumentoEmail) {
$this->Id = $ArgumentoId;
$this->NomeFantasia = $ArgumentoNomeFantasia;
$this->Telefone = $ArgumentoTelefone;
$this->Email = $ArgumentoEmail;
}
}
?>
- 127 -
DESENVOLVIMENTO WEB III - 7142
/*
* Associação
*/
$fabricante = new Fabricante(9033, 'Ford do Brasil', '(11)
99999-8888', 'contato@ford.com.br');
$carro = new Carro('1232', 'Fusion', 80000, $fabricante);
?>
- 128 -
DESENVOLVIMENTO WEB III - 7142
Métodos Mágicos
Os métodos mágicos são reservados, todos prefixados com dois caracteres
“_” (underline) no início.
Os métodos __set(), __get() e __call são alguns desses métodos. Trata-se de
métodos opcionais e geralmente utilizados para executarem ações consideradas
especiais e específicas.
__SET: O método __set() é invocado toda vez que um atributo não declarado
da classe recebe a atribuição de um valor. Este método espera dois parâmetros, o
primeiro contendo o nome do atributo e o segundo seu valor.
class Pessoas {
/*
* Primeiro Passo: Declarar os Atributos
*/
private $Nome;
private $Sobrenome;
- 129 -
DESENVOLVIMENTO WEB III - 7142
/*
* Segundo Passo: Declarar os Métodos
* Obs: Se não existissem os métodos __set e __get eu
jamais conseguiria
* acessar estes atributos, pois os mesmos são private
=> estes
* atributos só podem ser acessados dentro da própria
classe
*/
}
?>
include './Classes/Pessoas.class.php';
?>
- 131 -
DESENVOLVIMENTO WEB III - 7142
- 132 -
DESENVOLVIMENTO WEB III - 7142
Função __autoload
A partir da versão 5 do PHP, foi inserido uma nova forma de carregar classes.
Essa abordagem para carregamento “sob demanda” é feita através da função
__autoload. Está função permite que o desenvolvedor não tenha que declarar uma
longa lista de includes ou require_once no início de cada script.
/*
* Primeiro Passo: Declarar atributos
*/
public $nome;
/*
* Primeiro Passo: Declarar atributos
*/
public $idade;
include_once "./Classes/{$classe}.class.php";
- 135 -
DESENVOLVIMENTO WEB III - 7142
Banco de Dados
Cada driver PDO (PHP DATA OBJECT) especifica uma forma de como é
montado o chamado “DNS”, que é uma string de conexão para o SGBD
correspondente. Além do DNS, também é informado, por parâmetro, o usuário, a
senha de acesso e algumas opções adicionais. Vejamos abaixo o uso do PDO para
sqlite, firebird e Postgre SQL.
new PDO('sqlite:teste.db');
new PDO("firebird:dbname=c:\banco.GDB", "SYSDBA", "masterkey");
new PDO("pgsql:dbname=exemplo;user=user;password=senha;host=localhost");
class PDOConnectionFactory {
/*
* Recebe a conexão do banco de dados
*/
/*
* Recebe qual o tipo de banco de dados
*/
protected $dbType = "mysql"; //mysql, oracle, pgsql,
firebird ...
- 136 -
DESENVOLVIMENTO WEB III - 7142
/*
* Parâmetros de Conexão
*/
protected $host = "localhost";
protected $user = "root";
protected $senha = "";
protected $db = "agenda_PDO";
/*
* Configura a persistência da conexão
* Ela pode ser verdadeira, se você for utilizar uma
conexão persistente
* ou falsa, caso contrário
*/
protected $persistent = false;
/*
* new PDOConnectionFactory( true ) <--- conexão
persistente
* new PDOConnectionFactory() <--- conexao não
persistente
*/
/*
* Verificar a persistência da conexao
*/
if ($persistent != false) {
$this->persistent = true;
}
}
- 137 -
DESENVOLVIMENTO WEB III - 7142
/*
* Se realizado com sucesso, retorna conectado
*/
return $this->con;
/*
* Caso ocorra um erro, retorna o erro;
*/
} catch (PDOException $ex) {
echo "Erro: " . $ex->getMessage();
}
}
/*
* Desconectar o banco de dados
*/
}
?>
- 138 -
DESENVOLVIMENTO WEB III - 7142
- 139 -
DESENVOLVIMENTO WEB III - 7142
class PDOConnectionFactory {
/*
* Recebe a conexão do banco de dados
*/
/*
* Recebe qual o tipo de banco de dados
*/
protected $dbType = "mysql"; //mysql, oracle, pgsql,
firebird ...
/*
* Parâmetros de Conexão
*/
protected $host = "localhost";
protected $user = "root";
protected $senha = "";
protected $db = "projetopoo";
/*
* Configura a persistência da conexão
* Ela pode ser verdadeira, se você for utilizar uma
conexão persistente
* ou falsa, caso contrário
*/
- 140 -
DESENVOLVIMENTO WEB III - 7142
/*
* new PDOConnectionFactory( true ) <--- conexão
persistente
* new PDOConnectionFactory() <--- conexao não
persistente
*/
/*
* Verificar a persistência da conexao
*/
if ($persistent != false) {
$this->persistent = true;
}
}
/*
* Se realizado com sucesso, retorna conectado
*/
return $this->con;
- 141 -
DESENVOLVIMENTO WEB III - 7142
/*
* Caso ocorra um erro, retorna o erro;
*/
} catch (PDOException $ex) {
echo "Erro: " . $ex->getMessage();
}
}
/*
* Desconectar o banco de dados
*/
public function Close() {
if ($this->con != null) {
$this->con = null;
}
}
}
?>
- 142 -
DESENVOLVIMENTO WEB III - 7142
Agora, dentro do subdiretório DAO, vamos criar uma classe com o nome
MagicAgenda.class.php. Nesta classe vamos colocar os métodos mágicos __get()
e __set(). Veja o código abaixo:
<?php
class MagicAgenda {
/*
* Primeiro Passo: Declarar atributos
*/
private $id;
private $nome;
private $email;
private $telefone;
/*
* Segundo Passo: Declarar os métodos
*/
Agora, ainda dentro do subdiretório DAO, vamos criar uma nova classe com o
nome AgendaDAO.class.php. Nesta classe vamos colocar os métodos Inserir
(insere novos contatos), Deletar (apaga um contato), Alterar (altera um contato
selecionado) e Listar (lista os contatos). Veja abaixo o código da
AgendaDAO.class.php:
- 143 -
DESENVOLVIMENTO WEB III - 7142
<?php
/* Classe DAO (Data Access Object) para tabela Agenda
* Será reponsável pelas operações (INSERT, UPDATE,
DELETE, SELECT)
*/
require_once
'../Classes/PDO/PDOConnectionFactory.class.php';
/*
* Atributo de Conexão
*/
public $conex = null;
/*
* Método Construtor
* Aqui chamamos o método getConnection da Classe
PDOConnectionFactory
*/
public function __construct() {
$this->conex =
PDOConnectionFactory::getConnection();
}
- 144 -
DESENVOLVIMENTO WEB III - 7142
/*
* Cadastrar Registro
*/
public function Inserir($agenda){
try {
/*
* Preparar a query de inserção - Prepare
Statement
* Note que estou protegendo do SQL Injection
(A Injeção de SQL, mais
* conhecida através do termo americano SQL
Injection, é um tipo de ameaça
* de segurança que se aproveita de falhas em
sistemas que interagem com bases
* de dados via SQL. A injeção de SQL ocorre
quando o atacante consegue inserir
* uma série de instruções SQL dentro de uma
consulta (query) através da
* manipulação das entradas de dados de uma
aplicação.).
*/
- 145 -
DESENVOLVIMENTO WEB III - 7142
/*
* Executar a Query
*/
$stmt->execute();
echo "<center>";
echo "Registro inserido com sucesso!!!<br
/><br />";
echo "<div><font face=Arial size=2>[ <a
href='../index.php'>Voltar para o Menu Principal</a>
]</font></div>";
echo "</center>";
/*
* Fecha a Conexão
*/
$this->conex = null;
/*
* Remover Registro
*/
public function Deletar($id) {
try {
- 146 -
DESENVOLVIMENTO WEB III - 7142
/*
* Alterar Registro
*/
public function Alterar($agenda,$condicao){
try {
/*
* Preparar a query de alteração
* Note que estou protegendo do SQL Injection.
*/
- 147 -
DESENVOLVIMENTO WEB III - 7142
$stmt->bindValue(1,$agenda->nome);
$stmt->bindValue(2,$agenda->email);
$stmt->bindValue(3,$agenda->telefone);
$stmt->bindValue(4,$condicao);
/*
* Executar minha Query
*/
$stmt->execute();
echo "<center>";
echo "Registro alterado com sucesso!!!<br
/><br />";
echo "<div><font face=Arial size=2>[ <a
href='../index.php'>Voltar para o Menu Principal</a>
]</font></div>";
echo "</center>";
/*
* Fechar Conexão
*/
$this->conex = null;
- 148 -
DESENVOLVIMENTO WEB III - 7142
/*
* Listar Registros
*/
public function Listar($query=null) {
try {
// Se eu não passar query nenhuma como
parâmetro, será selecionado todos os registros
if ($query == null) {
$stmt = $this->conex->query("SELECT * FROM
agenda");
echo"<center>";
echo"<b>Lista de Contatos
Selecionados</b><br /><br />";
while ($row = $stmt-
>fetch(PDO::FETCH_ASSOC)){
- 149 -
DESENVOLVIMENTO WEB III - 7142
/*
* Fechar Conexão
*/
$this->conex = null;
return $stmt;
- 150 -
DESENVOLVIMENTO WEB III - 7142
</body>
</html>
- 152 -
DESENVOLVIMENTO WEB III - 7142
- 153 -
DESENVOLVIMENTO WEB III - 7142
- 154 -
DESENVOLVIMENTO WEB III - 7142
<head>
<title>Agenda - Alterar Dados</title>
</head>
<body>
<center>
<b>Alterar Contato</b><br />
<form id="form1" name="form1" method="post"
action="AgendaAlterar.php">
<p>Id: <?php echo($_GET['tf_id']); ?></p>
<p>Nome: <input type="text" name="tf_nome"
id="tf_nome" value="<?php echo($_GET['tf_nome']); ?>"
autofocus /></p>
<p>E-mail: <input type="text" name="tf_email"
id="tf_email" value="<?php echo($_GET['tf_email']); ?>" /></p>
<p>Telefone: <input type="text" name="tf_telefone"
id="tf_telefone" value="<?php echo($_GET['tf_telefone']); ?>"
/></p>
<input type="hidden" name="tf_id" id="tf_id"
value="<?php echo($_GET['tf_id']); ?>" />
<p><input type="submit" name="Alterar" id="Alterar"
value="Alterar" /></p>
</form>
<div><font face=Arial size=2>[ <a
href='../index.php'>Voltar para o Menu Principal</a>
]</font></div>
</center>
</body>
</html>
function __autoload($classe) {
include_once "../Classes/DAO/{$classe}.class.php";
}
function __autoload($classe) {
include_once "../Classes/DAO/{$classe}.class.php";
}
Pronto. Nosso projeto está completo. Faça alguns testes e veja se o mesmo
está funcionando corretamente.
- 156 -
DESENVOLVIMENTO WEB III - 7142
Bom trabalho!!!
- 157 -
DESENVOLVIMENTO WEB III - 7142
CONSIDERAÇÕES FINAIS
Vendo pela primeira vez, parece difícil, mais é só impressão. Esse tutorial
possui todos os códigos fontes necessários para realização dos testes, bastando
apenas que vocês criem as tabelas necessárias utilizando o PHPMyAdmin. Qualquer
dúvida é só mandar um email para dalamura@gmail.com
A linguagem PHP é uma ferramenta poderosa e simples de utilizar na
construção de sites dinâmicos para a World Wide Web, possibilitando uma maior
interação com o usuário e a armazenagem das informações em Bancos de Dados.
Deve ficar claro para o aluno, entretanto, que a combinação de scripts server-
side, como é o PHP, com scripts client-side, como JavaScript, por exemplo, possibilita
um maior aproveitamento dos recursos disponíveis para criar páginas dinâmicas, e
no processo de criação deve-se ponderar bastante para concluir qual dos dois tipos
de scripts deve ser utilizado para determinado fim.
Entre as linguagens de script server-side, PHP aparece como uma ótima
opção, por diversos motivos: o custo de aquisição, que não existe; a portabilidade,
permitindo que uma aplicação seja desenvolvida em uma plataforma para ser
executada em outra; a simplicidade, já que os scripts ficam no próprio código HTML,
e possuem uma sintaxe bastante simples; a possibilidade de trabalhar com diversos
bancos de dados e servidores HTTP, além do grande número de funções pré-
definidas, entre outras coisas.
- 158 -
DESENVOLVIMENTO WEB III - 7142
REFERÊNCIAS BIBLIOGRÁFICAS
SILVA, Maurício Samy. HTML 5: A linguagem de marcação que revolucionou a
WEB. 2. Ed. São Paulo: Novatec, 2014.
FREEMAN, Eric. Use a Cabeça: Programação Java Script. Rio de Janeiro: Alta
Books, 2016.
NIEDERAUER, Juliano. PHP para quem conhece PHP. 5. Ed. São Paulo: Novatec,
2017.
MUTO, Claudio Adonai. PHP e MySQL: Guia Introdutório. 3. Ed. Rio de Janeiro:
Brasport, 2006.
- 159 -
DESENVOLVIMENTO WEB III - 7142
- 160 -
DESENVOLVIMENTO WEB III - 7142
CONTROLE DE VERSÕES
- 161 -