Prévia do material em texto
PROGRAMAÇÃO III
Professor Me. Carlos Benedito Sica de Toledo
GRADUAÇÃO
UNICESUMAR
C397 CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a
Distância; TOLEDO, Carlos Benedito Sica de.
Programação III. Carlos Benedito Sica de Toledo.
(Reimpressão revista e atualizada)
Maringá-Pr.: UniCesumar, 2016.
187 p.
“Graduação - EaD”.
1. Linguagem HTML. 2. Linguagem PHP. 3. Programação. 4. EaD.
ISBN 978-85-8084-704-8
CDD 22ª Ed. 005.1
NBR 12899 - AACR/2
Reitor
Wilson de Matos Silva
Vice-Reitor
Wilson de Matos Silva Filho
Pró-Reitor de Administração
Wilson de Matos Silva Filho
Pró-Reitor de EAD
Willian Victor Kendrick de Matos Silva
Presidente da Mantenedora
Cláudio Ferdinandi
NEAD - Núcleo de Educação a Distância
Direção Operacional de Ensino
Kátia Coelho
Direção de Planejamento de Ensino
Fabrício Lazilha
Direção de Operações
Chrystiano Mincoff
Direção de Mercado
Hilton Pereira
Direção de Polos Próprios
James Prestes
Direção de Desenvolvimento
Dayane Almeida
Direção de Relacionamento
Alessandra Baron
Gerência de Produção de Conteúdo
Juliano de Souza
Supervisão do Núcleo de Produção de
Materiais
Nádila de Almeida Toledo
Coordenador de conteúdo
Danillo Xavier Saes
Design Educacional
Fernando Henrique Mendes
Rossana Costa Giani
Projeto Gráfico
Jaime de Marchi Junior
José Jhonny Coelho
Editoração
Thayla Daiany Guimarães Cripaldi
Revisão Textual
Keren Pardini
Maria Fernanda Canova Vasconcelos
Ilustração
Robson Yuiti Saito
Ficha catalográfica elaborada pelo bibliotecário
João Vivaldo de Souza - CRB-8 - 6828
Viver e trabalhar em uma sociedade global é um
grande desafio para todos os cidadãos. A busca
por tecnologia, informação, conhecimento de
qualidade, novas habilidades para liderança e so-
lução de problemas com eficiência tornou-se uma
questão de sobrevivência no mundo do trabalho.
Cada um de nós tem uma grande responsabilida-
de: as escolhas que fizermos por nós e pelos nos-
sos fará grande diferença no futuro.
Com essa visão, o Centro Universitário Cesumar –
assume o compromisso de democratizar o conhe-
cimento por meio de alta tecnologia e contribuir
para o futuro dos brasileiros.
No cumprimento de sua missão – “promover a
educação de qualidade nas diferentes áreas do
conhecimento, formando profissionais cidadãos
que contribuam para o desenvolvimento de uma
sociedade justa e solidária” –, o Centro Universi-
tário Cesumar busca a integração do ensino-pes-
quisa-extensão com as demandas institucionais
e sociais; a realização de uma prática acadêmica
que contribua para o desenvolvimento da consci-
ência social e política e, por fim, a democratização
do conhecimento acadêmico com a articulação e
a integração com a sociedade.
Diante disso, o Centro Universitário Cesumar al-
meja ser reconhecida como uma instituição uni-
versitária de referência regional e nacional pela
qualidade e compromisso do corpo docente;
aquisição de competências institucionais para
o desenvolvimento de linhas de pesquisa; con-
solidação da extensão universitária; qualidade
da oferta dos ensinos presencial e a distância;
bem-estar e satisfação da comunidade interna;
qualidade da gestão acadêmica e administrati-
va; compromisso social de inclusão; processos de
cooperação e parceria com o mundo do trabalho,
como também pelo compromisso e relaciona-
mento permanente com os egressos, incentivan-
do a educação continuada.
Seja bem-vindo(a), caro(a) acadêmico(a)! Você está
iniciando um processo de transformação, pois quan-
do investimos em nossa formação, seja ela pessoal
ou profissional, nos transformamos e, consequente-
mente, transformamos também a sociedade na qual
estamos inseridos. De que forma o fazemos? Criando
oportunidades e/ou estabelecendo mudanças capa-
zes de alcançar um nível de desenvolvimento compa-
tível com os desafios que surgem no mundo contem-
porâneo.
O Centro Universitário Cesumar mediante o Núcleo de
Educação a Distância, o(a) acompanhará durante todo
este processo, pois conforme Freire (1996): “Os homens
se educam juntos, na transformação do mundo”.
Os materiais produzidos oferecem linguagem dialó-
gica e encontram-se integrados à proposta pedagó-
gica, contribuindo no processo educacional, comple-
mentando sua formação profissional, desenvolvendo
competências e habilidades, e aplicando conceitos
teóricos em situação de realidade, de maneira a inse-
ri-lo no mercado de trabalho. Ou seja, estes materiais
têm como principal objetivo “provocar uma aproxi-
mação entre você e o conteúdo”, desta forma possi-
bilita o desenvolvimento da autonomia em busca dos
conhecimentos necessários para a sua formação pes-
soal e profissional.
Portanto, nossa distância nesse processo de cres-
cimento e construção do conhecimento deve ser
apenas geográfica. Utilize os diversos recursos peda-
gógicos que o Centro Universitário Cesumar lhe possi-
bilita. Ou seja, acesse regularmente o AVA – Ambiente
Virtual de Aprendizagem, interaja nos fóruns e en-
quetes, assista às aulas ao vivo e participe das discus-
sões. Além disso, lembre-se que existe uma equipe de
professores e tutores que se encontra disponível para
sanar suas dúvidas e auxiliá-lo(a) em seu processo de
aprendizagem, possibilitando-lhe trilhar com tranqui-
lidade e segurança sua trajetória acadêmica.
Diretoria Operacional
de Ensino
Diretoria de
Planejamento de Ensino
Professor Me. Carlos Benedito Sica de Toledo
Meu nome é Carlos Benedito Sica de Toledo, mas meus alunos e amigos me
chamam de Professor Sica. Eu ensino programação para computadores há
muitos anos, conheço várias linguagens de programação, mas desenvolvi
certa paixão pela programação para a Internet. Eu já escrevi sete livros
didáticos na área de computação, dos quais cinco são sobre PHP, e agora eu
escrevi este especialmente para o seu curso.
A
U
TO
RE
S
SEJA BEM-VINDO(A)!
Dividimos o conteúdo do curso para você aprender as linguagens HTML e PHP, e PHP
Orientado a objetos, pois este último depende fortemente dos conceitos anteriores.
Vamos fazer uma pequena revisão sobre a teoria da Orientação a objetos, mas nós tam-
bém nos baseamos nos livros que você já utilizou para aprender Engenharia de Softwa-
re, mais especificamente sobre Orientação a Objetos e Java, assim, sempre que tiver
dúvidas, pode recorrer ao seu próprio material didático.
Muito bem, vou começar contando pra você como a linguagem PHP foi concebida.
Em 1994, Rasmus Lerdorf, que é membro da comunidade Apache, escreveu a primeira
versão do interpretador PHP em Perl para funcionar como um CGI (Common Gateway
Interface), que é o método usado para permitir a interação entre o servidor e os clientes.
Ela foi criada para ser utilizada exclusivamente na Internet e, no começo, tinha o objeti-
vo de criar páginas pessoais com funcionalidades maiores que as fornecidas pela lingua-
gem de marcação HTML, por isso o nome “Personal Home Page”, que significa “Página
Pessoal”.
Devido à grande propagação dessa linguagem, Rasmus disponibilizou uma parte da
documentação para o público, dando, assim, origem ao PHP v.01. Em seguida, foi adi-
cionado um sistema para a interpretação de formulários, dando origem ao PHP/FI (Form
Interpreter). A partir daí, novos colaboradores foram surgindo e a linguagem PHP vem
demonstrando uma constante evolução.
Agora ela aceita todas as estruturas de programação conhecidas e também é a melhor
linguagem para quem trabalha com banco de dados, além disso, conta com um respei-
tável suporte para a programação orientada a objetos.
Dado o desenvolvimento da Internet, bem como o da própria linguagem, o PHP ocupa
um importante espaço no setor de desenvolvimento de sistemas para a Web, em espe-
cial para empresas de pequeno e médio porte que desejam sistemas computacionais
completos, mas também para as empresas de grande porte que desejam scripts que
integrem seu sistema.
Como a Linguagem PHP apresenta a melhor curva de aprendizagem e desenvolvimento
de sistemas, aliada a outras tecnologias, se tornou amaior arma para o desenvolvimento
de sistemas computacionais para a Internet, a velocidade de concepção de softwares a
coloca em primeiro lugar na maioria das empresas desenvolvedoras, e, também, é cada
vez mais ensinada nas universidades de todo o mundo.
APRESENTAÇÃO
PROGRAMAÇÃO III
8 - 9
SUMÁRIO
8 - 9
UNIDADE I
A LINGUAGEM HTML
15 Introdução
18 Ligações Dentro da Página e com Outras Páginas
19 Formatação de Texto
20 Caracteres Especiais
21 Tabelas
23 Listas
26 Imagens
28 Formulários Eletrônicos x PHP
32 <Input>
36 <Select>
37 <Textarea>
38 Sobre uploads de arquivos
40 Considerações Finais
UNIDADE II
A LINGUAGEM PHP
47 Introdução
47 Iniciando com a Linguagem PHP
51 Tipos de Dados Suportados pelo PHP
54 Algumas funções de String
SUMÁRIO
10 - 11
58 Algumas funções de Ordenação Arrays
64 Variáveis
75 Constantes
76 Operadores
82 Exemplos de algumas funções da Biblioteca PHP Matemática
83 Alguns Exemplos Adicionais
84 Considerações Finais
UNIDADE III
ESTRUTURAS DE PROGRAMAÇÃO
89 Introdução
89 Estruturas de Decisão e Seleção
92 O Encadeamento If/Else/If
94 Estruturas de Iteração (Laços De Repetição)
97 While
98 Do - While
99 Foreach
101 Comandos de Desvio
104 Return
105 Exit/DIE
106 Considerações Finais
SUMÁRIO
10 - 11
UNIDADE IV
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
111 Introdução
111 Conceitos Básicos da OO
114 Implementação da Teoria OO com a Linguagem PHP
129 O Modificador “Final” (PHP 5)
130 Criação e Implementação de Interfaces de Objetos
132 Iteração sobre Objetos com a Estrutura FOREACH (PHP5)
134 Funções Para Classes e Objetos
135 Considerações Finais
UNIDADE V
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
141 Introdução
141 Operações Sobre Arquivos de Música Tipo Mp3
147 Operações Sobre Diretórios ou Pastas Remotas
149 Buscando Endereços a Partir do CEP no Site dos Correios
153 Uma Classe para Acessar o Banco de Dados Mysql
164 Considerações Finais
U
N
ID
A
D
E I
Professor Me. Carlos Benedito Sica de Toledo
A LINGUAGEM HTML
Objetivos de Aprendizagem
■ Aprender a linguagem HTML.
■ Aprender a construir formulários.
■ Aprender a criar a apresentação de uma página web.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■ Conceitos iniciais da linguagem HTML
■ Conceitos de hipertexto e hiperlink
■ Tabelas
■ Formulários eletrônicos e preparação dos dados para envio na
Internet
14 - 15
Introdução
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
14 - 15
INTRODUÇÃO
Todo documento HTML apresenta elementos entre colchetes angulares “<” e “>”,
também utilizados na matemática como sinal de menor e maior, respectivamente.
Esses elementos em conjunto e entre os citados sinais formam as etiquetas (tags)
da linguagem HTML, que são justamente os comandos de formatação do texto.
A maioria das etiquetas tem sua correspondente de fechamento precedida
por uma barra (<etiqueta>...</etiqueta>). Isso é necessário porque as etiquetas
servem para definir a formatação de trechos do texto.
O código-fonte desta linguagem como um todo é delimitado pelo par de
etiquetas <html>...</html>, e dentro delas vão as outras tags, como no exem-
plo abaixo:
<html>
<head>
<title>
Título do documento
</title>
</head>
<body>
Corpo do Documento
</body>
</html>
■ Os elementos <head> e <title>
Dentro do par <head>...</head> fica o cabeçalho que contém informa-
ções gerais sobre o documento inteiro. O mais simples é o que compõe
o título da página. Esse título aparecerá na barra superior do navegador
e deve ser delimitado pelas etiquetas <title>...</title>.
<title>
Título do documento
</title>
©<No intersecting link>
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
16 - 17I
■ O elemento <body>
O texto contido na delimitação do par <body>...</body> é o texto que
será apresentado ao leitor, mostrado na janela principal do navegador.
Esse corpo pode conter títulos de itens e subitens (cabeçalhos), parágra-
fos, listas, tabelas, formulários, ligações (links) para outros documentos,
imagens, sons etc.
<html>
<head>
<title>
Curso de PHP e HTML
</title>
</head>
<body>
<h1>Curso completo da linguagem HTML</h1>
<p>
Escrever um documento na linguagem HTML é muito sim-
ples.
Para pular uma linha basta encerrar o parágrafo.
</p>
<p>
Mas cuidado, não importa onde se quebra a linha
no documento original, o que vale
é a formatação
da linguagem.
</p>
</body>
</html>
Introdução
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
16 - 17
■ Títulos do tipo cabeçalho intituladores
Também chamados de cabeçalhos, os títulos de itens e subitens que com-
põem o texto da página não devem ser confundidos com o título do
documento <head> dentro da etiqueta <head> ou com os cabeçalhos
do protocolo HTTP.
Existem seis níveis de cabeçalhos intituladores delimitados pelas etique-
tas <h1>...</h1> até <h6>...</h6>, sendo h1 o mais forte da hierarquia,
com a fonte maior, até a menor fonte do h6, o mais fraco na hierarquia.
<body>
<h1>CAPÍTULO 1</h1>
<h2>Tags HTML</h2>
TEXTO QUE COMPÕE CORPO DA PÁGINA
</body>
■ Formatação de parágrafos e quebras de linha
Existem quatro formas de obter uma quebra de linha: aplicando as etique-
tas <p>...</p>,<br>,<pre>...</pre> e automaticamente pelo navegador.
A primeira, <p>, cria um parágrafo e seu término </p>. Além de provo-
car uma quebra de linha, força um espaço entre o parágrafo corrente e o
seguinte, criando uma entrelinha em branco.
A segunda, obtida por <br> ou </br>, quebra a linha sem provocar espa-
çamento entre os parágrafos. Utilizada normalmente para quebrar as
linhas dentro dos parágrafos, mas pode ser utilizada em textos que não
são delimitados pelas etiquetas de parágrafo.
A etiqueta <pre>...</pre> força o navegador a aceitar a formatação feita
pelo editor de texto, inclusive respeitar as quebras de linha que normal-
mente não são satisfeitas.
Por fim, deve-se utilizar uma destas três etiquetas quando é desejado que
a linha seja forçosamente quebrada em determinado ponto, porque os
navegadores se encarregam de encaixar os textos contidos nos parágra-
fos dentro dos limites de sua janela.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
18 - 19I
LIGAÇÕES DENTRO DA PÁGINA E COM OUTRAS
PÁGINAS
A linguagem HTML permite o desvio para uma região do documento corrente
ou para outro documento por meio de ligações (links), que podem ter uma por-
ção de texto ou imagem, compondo assim um hipertexto.
Para inserir um link em um documento, utiliza-se a etiqueta <a>...</a>, con-
forme ilustra o exemplo abaixo:
<a href = “endereço destino”>texto ou imagem para clicar</a>
Sendo que HREF significa que a seguir vem uma referência ao endereço de
destino, que pode ser no próprio texto, em outro do mesmo servidor ou externo.
Existem três tipos de ligação com o documento destino: relativo, absoluto
e trechos de documentos.
Caminho relativo
O caminho relativo pode ser usado sempre que se deseja fazer referência a um
documento que esteja no mesmo servidor do documento corrente. Para escre-
ver um link de um documento desse tipo, basta escrever o caminho a partir do
diretório raiz onde está o documento corrente, por exemplo:
<a href = “apostila.html”>Leia a apostila sobre HTML</a>
<a href = “../inicial.html”>Volte ao menu principal</a>
Caminho absoluto
Utiliza-se o caminho absoluto quando se almeja referenciar um documento que
esteja em outro servidor, em qualquer lugar do mundo.
<a href = “http://www.cesumar.br”>Visite a página do CESU-
MAR</a>
Caminho para um pontodo documento
Neste caso, além do atributo href, que indica o endereço de um documento de
destino em uma ligação de hipertexto, a etiqueta <a> possui o atributo name,
que permite indicar um ponto do documento ativo como alvo de chegada de
A junção desta técnica com a do caminho absoluto pode ser utilizada para
apontar e chegar ao alvo especificado em outro documento.
Formatação de Texto
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
18 - 19
uma ligação. Esse recurso permite criar um índice no início do documento e des-
viar a leitura para cada ponto especificado. O exemplo abaixo “batiza” o ponto
escrito como alvo de chegada.
<a name=”formularios”>17.7 Formulários Eletrônicos x PHP</a>
O ponto de partida deve endereçar o rótulo atribuído em name, precedido por
um sinal #.
<a href=”#formularios”>17.7 Formulários Eletrônicos x PHP</a>
A ligação dentro do mesmo texto é representada no quadro abaixo:
Apontador Link Destino
href=”#formularios” > name=”formularios”
Quadro 1: Caminho para ligação dentro do documento
FORMATAÇÃO DE TEXTO
Existem dois tipos de formatação HTML: lógica e física.
Na primeira, a lógica, quando se formata um trecho do texto, por exemplo,
o cabeçalho de nível 1 (<h1>...</h1>), não são especificadas as características da
fonte, como o tipo, justificação, cor, tamanho etc., porque o navegador se encar-
rega de ajustar todos esses detalhes de acordo com sua configuração.
Além dos cabeçalhos utilizados para intitular os itens e subitens, existe a
formatação por meio da aplicação das etiquetas <pre>...</pre>, que apresen-
tam o texto da mesma forma que foi digitado; as etiquetas <blockquote>...</
blockquote>, que criam um trecho de texto indentado à direita; e as etique-
tas <address>...</address>, que apresentam o texto delimitado em um formato
semelhante aos endereços dos links.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
20 - 21I
Na segunda, a física, o estilo do texto deve ser explicitado e o navegador não
tem controle sobre ele. Os mais utilizados são o negrito (<b>...</b>) e o itálico
(<i>...</i>), mas com a etiqueta <font>...</font>, pode-se detalhar a formata-
ção do texto.
CARACTERES ESPECIAIS
A linguagem HTML permite que caracteres especiais, utilizados para o con-
trole do texto, tais como <, > e &, sejam apresentados na tela com a utilização
de sequências de escape, sensíveis à caixa (maiúsculas e minúsculas são diferen-
tes), compostos por três partes:
■ um & inicial;
■ um nome ou um número que representa o código ASCII precedido pelo
símbolo #; e
■ uma sequência que representa a ação finalizada por ;.
Seguem alguns exemplos:
CORPO DO TEXTO CARACTERE APRESENTADO
< <
> >
& &
º o
¸ ©
´ á
&Acute; Á
â â
 Â
&agrav; à
Tabelas
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
20 - 21
À À
ã ã
à Ã
Idem para as vogais e, i, o u. ...
&ccdil; ç
Ç Ç
ü ü
Ü Ü
“espaço em branco”
→ “seta para a direita”
← “seta para a esquerda”
↑ “seta para cima”
↓ “seta para baixo”
Quadro 2: Exemplos de características especiais
A maioria dos editores de texto atuais permite acentuar palavras diretamente e
o navegador, quando configurado corretamente, mostra-as de modo adequado.
Porém, se a página for vista por outros países, podem ocorrer problemas de
apresentação.
TABELAS
Uma tabela é delimitada pelas etiquetas <table>...</table>, as linhas pelas eti-
quetas <tr>...</tr> e as colunas por <td>...</td>. Podem-se utilizar também as
etiquetas <th>...</th> para criar uma linha destacada simbolizando o cabeça-
lho da tabela.
O atributo border define a largura das linhas que desenham a tabela, come-
çando pela mais fina que é 1, porém, o valor 0 (zero) inibe a apresentação das
linhas. Caso esse atributo seja omitido, o navegador assumirá 1 como padrão.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
22 - 23I
<table border=1>
<th>Coluna 1</th><th>Coluna 2</th>
<tr><td>linha 1, coluna 1</td><td>linha 1, coluna 2</td></tr>
<tr><td>linha 2, coluna 1</td><td>linha 2, coluna 2</td></tr>
</table>
Resultado:
COLUNA 1 COLUNA 2
linha 1, coluna 1 linha 1, coluna 2
linha 2, coluna 1 linha 2, coluna 2
Como recurso adicional, é possível dividir as colunas e linhas aplicando os atri-
butos colspan e rowspan.
<table border=1>
<tr><td colspan=2>Tabela com 2 colunas</td></tr>
<tr><td>linha 1, coluna 1</td><td>linha 1, coluna 2</td></tr>
<tr><td rowspan=2>linha 2 e 3, coluna 1</td><td>linha 2,
coluna 2</td></tr>
<tr><td>linha 3, coluna 2</td></tr>
<tr><td>linha 4, coluna 1</td><td>linha 4, coluna 2</td></tr>
</table>
O resultado é uma tabela com duas colunas.
TABELA COM DUAS COLUNAS
linha 1, coluna 1 linha 1, coluna 2
linhas 2 e 3, coluna 1
linha 2, coluna 2
linha 3, coluna 2
linha 4, coluna 1 linha 4, coluna 2
Listas
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
22 - 23
LISTAS
As listas podem ser utilizadas para destacar os seus itens, por indentação, bolo-
tas, números etc.
LISTAS DE DEFINIÇÃO
Entenda os itens:
CORPO DO TEXTO RESULTADO
<dl>
<dt> Termo a ser definido 1</dt>
<dd>Definição 1
<dt> Termo a ser definido 2</dt>
<dd>Definição 2
</dl>
Termo a ser definido 1
Definição 1
Termo a ser definido 2
Definição 2
Quadro 3: Lista de definição
LISTAS DE ITENS
Neste tipo de lista, cada item pode ser marcado ou não com bolotas:
CORPO DO TEXTO RESULTADO
<ul>
item da lista sem marca
<li>item da lista marcado</li>
<ul>
<li>subitem</li>
</ul>
</ul>
item da lista sem marca
• item da lista marcado
Ĕ subitem
Quadro 4: Lista de item não ordenado
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
24 - 25I
LISTAS DE ITENS NUMERADOS
As marcas simples utilizadas para evidenciar um item podem ser substituídas
pela numeração automática.
CORPO DO TEXTO RESULTADO
<ol>
<li>primeiro item da lista numerada</li>
<li>segundo item da lista numerada</li>
<li>terceiro item da lista numerada</li>
</ol>
1. primeiro item da lista numerada
2. segundo item da lista numerada
3. terceiro item da lista numerada
Quadro 5: Lista de itens ordenado
ANINHAMENTO
Em programação, o termo aninhamento é utilizado para dizer que um código
de programa é escrito dentro do outro código, lembrando a figura de um ninho
dentro do outro.
CORPO DO TEXTO RESULTADO
<dl>
<dt>termo a ser definido</dt>
<dd>definição</dd>
<ol>
<li>item de uma lista numerada</li>
<li>item de uma lista numerada</li>
<ul>
<li>subitem</li>
</ul>
<li>item de uma lista numerada</li>
</ol>
<dt>termo a ser definido</dt>
<dd>definição</dd>
</dl>
termo a ser definido
definição
1. item de uma lista numerada
2. item de uma lista numerada
• subitem
3. item de uma lista numerada termo
a ser definido
definição
Quadro 6: Aninhamento de listas
Listas
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
24 - 25
ESTILOS DE LISTAS MARCADAS
Listas marcadas são aquelas que, em geral, utilizam bolotas para destacar uma
linha.
CORPO DO TEXTO RESULTADO
<ul type=square>
<li>item de uma lista</li>
<li>item de uma lista</li>
</ul>
■ item de uma lista
■ item de uma lista
<ul type=disc>
<li>item de uma lista</li>
<li>item de uma lista</li>
</ul>
• item de uma lista
• item de uma lista
<ul type=circle>
<li>item de uma lista</li>
<li>item de uma lista</li>
</ul>
Ĕ item de uma lista
Ĕ item de uma lista
<ul type=square>
<li>item deuma lista</li>
<li type=circle>item de uma lista</li>
</ul>
■ item de uma lista
• item de uma lista
Quadro 7: Lista não ordenada marcada
ESTILOS DE LISTAS NUMERADAS
Como já estudamos anteriormente, as listas numeradas indicam números cres-
centes em cada linha destacada. O HTML também permite utilizar vários tipos
de números e letras com o mesmo objetivo.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
26 - 27I
CORPO DO TEXTO RESULTADO
<ol type=i>
<li>item da lista</li>
<li>item da lista</li>
</ol>
i. item da lista
ii. item da lista
<ol type=I>
<li>item da lista</li>
<li>item da lista</li>
</ol>
I. item da lista
II. item da lista
<ol type=a>
<li>item da lista</li>
<li>item da lista</li>
</ol>
a. item da lista
b. item da lista
<ol type=A>
<li>item da lista</li>
<li>item da lista</li>
</ol>
A. item da lista
B. item da lista
Quadro 8: Lista ordenada numerada
IMAGENS
As etiquetas que permitem exibir uma imagem no navegador são <img> e não
exigem fechamento, porque o único atributo exigido é o nome do arquivo fonte
que guarda a imagem. Neste caso, o caminho completo é mais indicado. O atri-
buto é src, abreviação de source, do inglês fonte.
<img src=”foto.jpg”>
A notação preferencial para este caso e de outras etiquetas que não exigem
fechamento é a seguinte:
<img src=”foto.jpg” />
Imagens
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
26 - 27
ATRIBUTOS PARA ALINHAR A IMAGEM
Para alinhar o texto adjacente com o topo da imagem, com o meio da imagem
e com a base da imagem, respectivamente, utilize:
<img src=”foto.jpg” align=top>
<img src=”foto.jpg” align=middle>
<img src=”foto.jpg” align=bottom>
Para alinhar a imagem à direita, envolvida por tudo o que houver ao redor
(texto e outras imagens), a partir do topo da imagem, utilize:
<img src=”foto.jpg” align=right>
De forma semelhante à esquerda:
<img src=”foto.jpg” align=left>
Para exibir duas imagens, uma em cada margem de uma mesma linha, deve-
se definir um parágrafo, indicando ao lado de cada imagem com o atributo align.
<p>
<img src=”foto.jpg” align=right>
<img src=”foto.jpg” align=left>
</p>
ATRIBUTO PARA DEFINIR O TAMANHO DA IMAGEM
Os atributos largura (width) e altura (height) determinam o tamanho em pixels
da apresentação, independentemente do tamanho original da imagem.
<img src=”foto.jpg” width=640 height=480>
Este artifício é utilizado para adequar o tamanho de uma figura ao espaço dis-
ponível ou desejado, porém não altera o tamanho real do arquivo que contém
a imagem, fato que mantém o tempo de transmissão do servidor para o cliente.
Por outro lado, ajustar esses dois atributos contribui com o tempo de com-
posição da homepage por dois aspectos: primeiro, porque o navegador formata
o texto antes de carregar as informações da imagem e, segundo, com essa infor-
mação disponível, o navegador consegue mostrar a imagem mais rapidamente.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
28 - 29I
ATRIBUTOS PARA MANIPULAR AS BORDAS
O atributo border é opcional, tendo o valor 1 (um) como padrão, desenha uma
borda ao redor da imagem mostrada. Se a borda não for desejada, deve-se atri-
buir-lhe 0 (zero).
<img src=”foto.jpg” border=0>
Isso é particularmente útil quando uma figura é também um link para nave-
gar para outra página.
<a href=”outra_pagina.html”><img src=”foto.jpg” border=0></
a>
Os atributos espaço horizontal (hspace) e espaço vertical (vspace) definem
a distância da imagem até o próximo objeto, seja ele texto ou imagem.
<img src=”foto.jpg” hspace=10 vspace=5>
TEXTO ALTERNATIVO
O texto alternativo, por exemplo, o título da imagem, é mostrado quando o
mouse passa sobre a imagem e quando a imagem, por algum motivo, como um
erro, não pode ser mostrada.
<img src=”foto.jpg” alt=”minha foto”>
FORMULÁRIOS ELETRÔNICOS X PHP
Para produzir uma navegação interativa, a linguagem Web nativa, que é o HTML,
deve se comunicar com o PHP enviando dados de um script para outro. Isto é
possível quando criamos variáveis nos formulários HTML e, após preencher os
campos, enviamos o formulário.
©shutterstock
Formulários Eletrônicos x PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
28 - 29
Um formulário eletrônico é uma ferramenta especificada dentro de um
documento HTML. Ele permite a criação de documentos interativos na Web. Os
dados de entrada do usuário são submetidos a um script que se encarrega do pro-
cessamento desses dados, de acordo com o interesse do criador do documento.
Igualmente a um formulário impresso, o formulário eletrônico precisa de
campos para que os dados sejam escritos. A partir do momento em que um
formulário foi preenchido, a próxima ação é entregá-lo para os receptores que,
somente aí, farão a conferência dos dados, avaliação, armazenamento ou outra
ação. De forma semelhante, preencher os campos de um formulário eletrônico
não o faz “funcionar”, é necessário enviá-lo a um script que, ao receber os dados
do formulário, irá processá-los. Pode existir mais de um formulário dentro de um
único documento, neste caso, a informação de cada um é enviada exclusivamente.
A DELIMITAÇÃO DE UM FORMULÁRIO
Um formulário eletrônico é delimitado pelos marcadores (ou tags) <form>, que
representam o início dele e </form>, representando o final. Dentro dessa delimita-
ção, deve estar uma sequência de campos de entrada e de controle do formulário,
além disso, pode conter elementos de formatação HTML do documento.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
30 - 31I
OS ATRIBUTOS DE UM FORMULÁRIO
Dentro do marcador <form> são escritos ainda itens que definem a forma como
um formulário vai trabalhar. São eles: o nome do script que receberá os dados
quando o formulário for enviado, o método de envio desses dados e sua formatação.
O atributo action especifica o endereço do script, incluindo o URL do ser-
vidor, para o qual serão enviados os dados do formulário.
Exemplo:
<form action=”http://www.cesumar.edu/ead/cadastro_form.htm”>
O atributo method seleciona um método entre os dois existentes para empaco-
tar os dados enviados.
Os métodos de transferência do protocolo HTTP são: GET e POST, e são
debatidos neste item e no item Variáveis externas ao PHP ao longo deste livro.
O método GET transforma os dados gerados pelo formulário em uma string
contendo os pares “nome da variável” e o “valor da variável”, e concatena-a ao
final do endereço especificado no atributo action, tornando, inclusive, os dados
visíveis para o cliente.
Exemplo:
http://www.cesumar.br/ead/cadastro_script.php?nome=Carlos&-
cidade=Maring%E1
O “ponto de interrogação” separa o endereço da string de dados e o “e comer-
cial” separa as variáveis enviadas.
Já o método POST transmite todas as informações de entrada do FORM
para o script em um bloco de dados endereçado ao URL de forma invisível para
o usuário.
Exemplo:
<form action=”http://www.cesumar.edu/ead/cadastro_form.htm”
method=”post”>
O último atributo do formulário é o enctype e é opcional. Ele define o tipo de
codificação dos dados a serem enviados ao servidor. Este atributo pode receber
três valores: “multipart/form-data” ou “application/x-www-form-urlencoded”
ou “text/plain”. Aprenda os detalhes sobre isto no item “Cuidados ao transmi-
tir variáveis pela Internet”.
Formulários Eletrônicos x PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
30 - 31
A RECEPÇÃO DOS DADOS POR UM SCRIPT
Como foi ensinado anteriormente, os navegadores transitam essas informações
com base em dois métodos: GET e POST.
Com a utilização do métodoGET, o script receberá as variáveis com seus
respectivos valores inseridos no array pré-definido $_GET[], cujos índices são
os nomes das variáveis passadas.
Exemplo:
$variavel1 = $_GET[‘nome’];
$variavel2 = $_GET[‘cidade’];
Quando os dados são enviados para um script PHP, utilizando o método
POST, todas as variáveis do formulário são automaticamente disponibilizadas para
o script, guardadas no array $_POST[], cujos índices são os nomes das variáveis.
Exemplo:
$variavel1 = $_POST[‘nome’];
$variavel2 = $_POST[‘cidade’];
OS CAMPOS DENTRO DOS DELIMITADORES DE FORMULÁRIOS
<FORM></FORM>
Um formulário eletrônico pode conter diversos tipos de campos de entrada, entre
eles: os campos que aceitam que o usuário digite textos com uma ou mais linhas,
menus de opções, itens de escolhas múltiplas ou exclusivas e botões.
Este item descreve cada um destes tipos de campos de entrada de dados,
começando pelo mais genérico deles, o INPUT.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
32 - 33I
<INPUT>
Indica uma entrada de dados identificada pelo par ‘nome’ (name) e ‘valor’ (value)
e pode ter os seguintes atributos: ‘tipo’ (type), ‘tamanho’ (size) e ‘espaço’ máximo
para a digitação (maxlength).
NAME é o atributo que nomeia a variável associada ao campo INPUT.
VALUE é o valor atribuído à variável nomeada por NAME. É possível defi-
nir um valor inicial atribuindo uma string neste campo.
TYPE seleciona um tipo de campo de entrada, que pode ser: text, password,
checkbox, radio, file, hidden, button, submit, image ou reset. Todos serão des-
critos em seguida.
type=“text” cria uma entrada de texto a ser digitado pelo usuário, configu-
rada pelos atributos.
Exemplo:
<form><input type=”text” size=”50” maxlength=”30” name=”-
nome” value=”padrão”></form>
SIZE é o tamanho com o qual o campo de entrada será apresentado na tela
do computador.
MAXLENGTH é a quantidade máxima de caracteres que o usuário pode
digitar naquele campo.
É comum em formulários de atualização cadastral atribuir uma variável PHP
ao campo ‹value›, como no exemplo abaixo:
<input type=”text” size=”50” maxlength=”30” name=”nome”
value=’<? echo $nome ?>’>
Alguns programadores costumam omitir as aspas ou as apóstrofes, visto
que a linguagem HTML não as exige, porém um novo erro ocorrerá: a variável
$nome será impressa somente até a ocorrência do primeiro espaço em branco.
<Input>
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
32 - 33
Type=“password” cria uma entrada de senhas, cujos caracteres digitados não são
mostrados na tela do computador, mas sim substituídos por *, como no exem-
plo abaixo.
Exemplo:
<form><input type=”password” size=”5”></form>
type=“checkbox” gera botões para múltipla escolha. Cada alternativa gera
um valor diferente a ser manipulado pelo script.
Exemplo:
<form>
<input type=”checkbox” name=”opcao1”>Texto1
<input type=”checkbox” name=”opcao2”>Texto2
<input type=”checkbox” name=”opcao3”>Texto3
</form>
A diretiva CHECKED estabelece se uma alternativa deve iniciar com o item
marcado.
<input type=”checkbox” name=”opcao1” checked>Texto1
type=”radio” produz um menu de escolha semelhante, porém, é admissível
escolher uma única alternativa. Para atingir esse objetivo, é essencial criar um
nome para o menu e repeti-lo em todas as alternativas.
CUIDADO: utilize sempre apóstrofes e não aspas, pois elas transformarão o
conteúdo em um texto simples, e não em um comando PHP.
Um arquivo é um tipo muito especial de dado, portanto, será tratado de for-
ma especial pelo script PHP que o receberá. Para aprender sobre isto, estude
o item “Sobre uploads de arquivos”.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
34 - 35I
Exemplo:
<form>
<input type=”radio” name=”opcao”>Texto1
<input type=”radio” name=”opcao”>Texto2
<input type=”radio” name=”opcao”>Texto3
</form>
A diretiva CHECKED estabelece se uma alternativa deve iniciar com o item
marcado.
<input type=”checkbox” name=”opcao” checked>Texto3
type=“file” - este campo de entrada aceita o nome de um arquivo para executar um
upload, que significa fazer uma cópia desse arquivo no servidor. Automaticamente
aparece um botão para abrir uma janela de diálogo para procurar o arquivo dese-
jado. Dependendo do sistema, poderá aparecer o texto “Browse...” ou “Procurar...”
no botão. Cada navegador pode colocar o texto que achar interessante.
Exemplo:
<input type=”file”>
type=“hidden” - um campo do tipo “hidden” não é mostrado na tela do
computador, porém, cria uma variável com o nome especificado em NAME e
associa-lhe o valor especificado no atributo VALUE. Esse par será integrado ao
pacote enviado para o script.
<input type=”hidden” name =”cidade” value=”Maringá”>
<Input>
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
34 - 35
type=‘button” - os autores podem criar três tipos de botão: submit, reset e
pushbutton. Este último não tem um comportamento padrão como os ante-
riores. Esse tipo de botão é utilizado para gerar eventos e a partir de um dos
possíveis, disparar uma função, como escrever em JavaScript ou chamar um
novo script qualquer.
Exemplo:
<input type=”button” value=”Muda Cor”>
type=“submit” cria um botão com o padrão do sistema que, ao ser “clicado”,
provoca o envio dos dados do formulário para o script especificado no atributo
ACTION de FORM. Nesse botão, o atributo VALUE significa o texto que vai
denominá-lo.
Exemplo:
<input type=”submit” value=”Enviar”>
type=”image” cria um botão do tipo “submit” fora do padrão do sistema.
Esse campo utiliza uma imagem especificada no atributo SRC para desenhar o
botão, mas o efeito é o mesmo de type=“submit”.
Exemplo:
<input type=”image” src=”botao.jpg” alt=”enviar”>
type=“reset” cria um botão com o padrão do sistema, que ao ser “clicado”
limpa todos os campos já digitados.
Exemplo:
<input type=”reset” value=”Limpar”>
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
36 - 37I
<SELECT>
Indica uma entrada de dados cujo resultado é uma lista de alternativas defini-
das por <OPTION>. Essa lista, por padrão, é de escolha exclusiva, porém, com
a utilização do modificador MULTIPLE, ela se torna de múltipla escolha. Além
disso, pode-se escolher alternativas para que sejam apresentadas pré-seleciona-
das por meio do modificador SELECTED.
Exemplo:
<select name=’avaliacao’>
<option value=”vazio”></option>
<option value=”avaliacao1”>Avaliação 1</option>
<option value=”avaliacao2”>Avaliação 2</option>
<option value=”avaliacao3”>Avaliação 3</option>
<option value=”exame”>exame</option>
</select>
Para selecionar múltiplas opções, deve-se manter a tecla “Ctrl” pressionada
enquanto clica com o mouse.
Em alguns casos, seria melhor dividir o menu em submenus ou grupos.
Para atingir esse resultado, deve-se utilizar a diretiva OPTGROUP, que define
um grupo de opções dentro do menu principal.
Exemplo:
<select name=’avaliacao’>
<option value=”vazio”></option>
<optgroup label=”Primeira Avaliação”>
<option value=”prova”> Prova </option>
<option value=”trabalho”> Trabalho </option>
</optgroup>
<Textarea>
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
36 - 37
<optgroup label=”Segunda Avaliação”>
<option value=”prova”> Prova </option>
<option value=”trabalho”> Trabalho </option>
</optgroup>
</select>
<TEXTAREA>
Abre uma área de digitação de textos com várias linhas. Este campo aceita, além
da definição de um nome, a designação de uma largura em caracteres e de uma
altura em linhas. O texto entre as marcações torna-se padrão para o usuário,que
pode apagá-lo se desejar.
<textarea” name=”comentario” cols=”40” rows=”5>Deixe seu
Comentário</textarea>
Para finalizar esta parte, vamos debater um pouco sobre o tipo file do campo
input. Para isto, vamos precisar antecipar alguns conceitos, por isso talvez você
necessite voltar aqui quando estiver estudando a Unidade V.
©shutterstock
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
38 - 39I
SOBRE UPLOADS DE
ARQUIVOS
A palavra upload significa popularmente
subir um arquivo, em palavras mais téc-
nicas, fazer uma cópia de um arquivo da
máquina cliente para a máquina servidora.
Naturalmente o contrário, que é download,
significa baixar ou copiar os arquivos de um
servidor para um cliente.
A linguagem PHP oferece uma fun-
ção “move_uploaded_file()” para efetuar
em conjunto com um formulário HTML a
transferência de arquivos do cliente para o
servidor.
Como explicado no item anterior, quando se agrega um arquivo de qual-
quer tipo (texto, imagem ou outro), os dados são de tipos variados e o formulário
deve ser preparado para transferências multipropósito (Multipurpose Internet
Mail Extensions), que permitem o envio de formatos “texto” e “não texto”
conjuntamente.
Exemplo: postagem de uma foto e a descrição dela, como se faz em um
fotolog.
<form action = “./fotolog.php”
method = “post”
name = “form”
enctype = “multipart/form-data”>
<input type = “file” name=”foto”>
<textarea cols=50 rows=5 name=”descricao”></textarea>
<input type = “submit” value=”Enviar”>
</form>
Sobre uploads de arquivos
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
38 - 39
O envio (submit) de um formulário contendo tipos de dados mistos pro-
voca ações paralelas:
■ A criação do array $_POST[] que conterá os dados no formato texto, neste
exemplo, $_POST[‘descricao’].
■ A criação do array $_FILES[] que conterá os dados do arquivo transferido,
contendo o nome do arquivo, o tipo (text/plain, image/jpeg ou outro),
o nome temporário, o código de erro (0 indica que não houve erro) e o
tamanho do arquivo transferido para a pasta temporária. Os dados trans-
feridos podem ser vistos utilizando a função “print_r($_FILES)”, que
retorna os dados contidos no array completo.
Array
(
[foto] => Array
(
[name] => “nome_do_seu_arquivo”
[type] => image/jpeg
[tmp_name] => /tmp/phpweiqc3
[error] => 0
[size] => 652774
)
)
■ A efetiva transferência dos dados e dos arquivos. No caso específico da
transferência de um arquivo, ela será feita automaticamente do cliente
para uma pasta temporária do servidor indicada pelo índice [tmp_name]
do array $_FILES.
■ A movimentação interna no servidor, da pasta temporária para a pasta
escolhida pelo programador, será feita pela função move_uploaded_
file(), que espera receber dois parâmetros: o nome temporário constante
do array $_FILES e o nome completo do destino, formado pelo nome da
pasta e o nome do arquivo.
A LINGUAGEM HTML
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
40 - 41I
<?
$fonte= $_FILES[‘foto’][‘tmp_name’];
$destino = “./upload/” . $_FILES[‘foto’][‘name’];
echo(“fonte : $fonte <br>”);
echo(“destino : $destino <br>”);
if(!move_uploaded_file($fonte , $destino)) {
echo(“Não foi possível enviar o arquivo!”);
}
else {
echo(“Arquivo enviado com sucesso!<br>”);
}
?>
CONSIDERAÇÕES FINAIS
No decorrer desta unidade, estudamos sobre a importância de uma linguagem
que possa apresentar os dados de diversos tipos na tela do navegador. HTML é
a linguagem nativa de todos os navegadores da Internet.
Aprendemos como construir uma página em HTML e suas particularida-
des, como: corpo, links, tabelas, imagens e arquivos.
Nesta unidade, estudamos um resumo com as principais tags que coman-
dam a linguagem de formatação HTML, e de agora em diante vamos estudar a
linguagem de programação que melhor se comunica com elas, possibilitando a
criação de poderosos programas que rodam exclusivamente na Internet.
Trabalhar com PHP implica obrigatoriamente em trabalhar com HTML.
Quanto mais você aprender sobre HTML, melhor programador PHP você se tor-
nará, pois a linguagem HTML não é de programação, serve apenas para apresentar
no navegador, de forma maquiada, as páginas criadas pelas diversas linguagens.
É com a linguagem HTML que são formatados os textos, construídas as tabe-
las, apresentadas as imagens e tudo mais que se refere ao visual.
Este link te levará para uma lista de 11 videoaulas sobre HTML5.
<http://www.youtube.com/playlist?list=PLB5D86AC78EF53E8F>.
Considerações Finais
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
40 - 41
Mas para o nosso interesse, a principal diferença é que o código HTML é
interpretado pelo navegador do usuário (cliente) e o código PHP é interpretado
pelo servidor (provedor) e, ao final da interpretação, o servidor PHP gera uma
página como se fosse originalmente escrita na linguagem HTML e a envia para
o navegador.
O usuário final (cliente) nunca enxerga o código-fonte PHP, o que ele vai ver
é apenas o resultado gerado no navegador. Mas você que é o programador criará
o código PHP no computador servidor. Para programar em PHP, você precisa
ter acesso a um servidor PHP fornecido pelo seu provedor ou criar um servidor
PHP no seu próprio computador.
O site da W3Schools oferece um conjunto de tutoriais, em muitos casos,
você poderá até mesmo testar o código-fonte que está aprendendo. É um
ambiente de autoaprendizagem que poderá ajudar muito no seu curso.
Nesta unidade, utilize o tutorial sobre HTML.
<http://www.w3schools.com/html/>.
Vou te indicar este site que traz um conjunto de tutoriais. Neste caso, um
tutorial sobre HTML, adequado para reforçar esta unidade.
<http://pt-br.html.net/tutorials/html/>.
42 - 43
1. Qual a diferença entre os quatro cabeçalhos possíveis?
2. Por que um <input> do tipo file é tão especial e diferente dos outros?
3. Crie uma página contendo um formulário completo para recolher os dados que
compõem a ficha de um cliente, incluindo sua foto. Utilize tabela para formatar
a interface visualmente.
PHP com Tudo
Carlos Sica
Editora: Ciência Moderna
Sinopse: A Linguagem PHP apresenta a melhor curva de aprendizagem
e, aliada a outras tecnologias, se tornou a maior arma para o
desenvolvimento de sistemas computacionais para a Internet. A
velocidade de concepção de softwares a coloca em primeiro lugar na
maioria das empresas desenvolvedoras e, também, é cada vez mais
ensinada nas universidades de todo o mundo. Este livro apresenta um
forte conteúdo didático sobre PHP, bem como um rico conjunto de exemplos da
linguagem, juntamente com seu relacionamento com todas as tecnologias que a envolvem, em
especial, as abordagens de programação estruturada e orientada a objetos e outras utilizadas
pela conceituação da engenharia de software. Tanto os programadores iniciantes como os
mais experientes encontrarão, neste livro, vasto material de aprendizagem e aplicação, desde
o nível básico até o avançado.
Programação I (PHP)
Carlos Sica
Editora: EAD – Unicesumar
Sinopse: Dado o desenvolvimento da Internet, bem como o da
própria linguagem, o PHP ocupa um importante espaço no setor de
desenvolvimento de sistemas para a Web, em especial para empresas
de pequeno e médio porte que desejam sistemas computacionais
completos, mas também para as empresas de grande porte que
desejam scripts que integrem seu sistema. A Linguagem PHP
apresenta a melhor curva de aprendizagem e, aliada a outras
tecnologias, se tornou a maior arma para o desenvolvimento de
sistemas computacionais para a Internet. A velocidade de concepção
de softwares a coloca em primeirolugar na maioria das empresas
desenvolvedoras e, também, é cada vez mais ensinada nas universidades de todo o mundo.
Este livro com conteúdo didático sobre PHP traz um rico conjunto de exemplos para aqueles
que estão iniciando com a linguagem. Vamos aprender juntos a programar em PHP e criar
aplicativos específicos voltados para matemática básica e científica, gravação de dados em
fichários tipo arquivos e muito mais.
Material Complementar
42 - 43
MATERIAL COMPLEMENTAR
PHP Orientado a Objetos – Fale a Linguagem da Internet
Carlos Sica
Editora: Ciência Moderna
Sinopse: Neste livro são abordados os principais conceitos para o
aprendizado de desenvolvimento de sistemas para web utilizando
a linguagem de programação PHP. Em um processo evolutivo, é
ensinada a estrutura geral da linguagem que mais cresce na Internet,
até conceitos de alto nível como o da teoria da orientação a objetos,
bem como da correta implementação na linguagem PHP. Outro
ponto forte desta publicação é o capítulo sobre banco de dados, com
exemplos de implementação em MySql. É dedicado aos professores
e acadêmicos de graduação e pós-graduação dos cursos da área de
computação ou informática, bem como aos analistas de sistemas, programadores e técnicos
em processamento de dados. O autor procura expressar estes conceitos de forma gradativa
para permitir até mesmo o público geral interessado em programação para web tirar grande
proveito aprendendo técnicas de programação de alto nível. São oferecidas ainda, de forma
bem estruturada, a teoria e a prática, através de exemplos sobre a gravação e a manipulação
de dados em arquivos, banco de dados, sessões e cookies. Sugestões de destaques:
Checagem dinâmica de tipos; Formulários e transmissão de variáveis pela Internet; Estruturas
de comparação e repetição; Segurança, privacidade e personalização na Internet; Cookies;
Sessão; Arquivos texto e binário; Envio de e-mails autenticados; FTP; Banco de dados MySQL;
Teoria e prática sobre imagens; HTML e seus objetivos Orientação a objetos (teoria e prática
das versões 4 e 5): Classes; Objetos; Ponteiro $this; Encapsulamento; Herança; Funções
Construtoras; Funções Destrutoras; Polimorfismo.
MATERIAL COMPLEMENTAR
A LINGUAGEM HTML
U
N
ID
A
D
E II
Professor Me. Carlos Benedito Sica de Toledo
A LINGUAGEM PHP
Objetivos de Aprendizagem
■ Aprender a construção da linguagem PHP.
■ Entender a relação de PHP com HTML.
■ Ser capaz de desenvolver um pequeno programa para a Internet.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■ O que são Dados e quais os tipos de dados suportados pela
linguagem
■ O que são Variáveis, como compor seus nomes e como utilizá-las
■ O que são Constantes e como elas se diferenciam das Variáveis
■ Quais são os Operadores e como são compostas as Operações
46 - 47
INTRODUÇÃO
A linguagem PHP foi concebida para exclusivamente desenvolver sistemas para
a Internet e tem uma forte ligação com a linguagem de apresentação chamada
HTML. Para o nosso interesse, é bom registrar que o código HTML é interpretado
pelo navegador do usuário (cliente) e o código PHP é interpretado pelo servidor
(provedor) e, ao final da interpretação, o servidor PHP gera uma página como
se fosse originalmente escrita na linguagem HTML e a envia para o navegador.
Para programar em PHP, você precisa ter acesso a um servidor PHP forne-
cido pelo seu provedor ou criar um servidor PHP no seu próprio computador.
Um programa PHP é também conhecido por script, que significa, “ao pé da
letra”, escrita, mas significa o programa em si, ou parte do programa que roda
naquele momento. Você vai encontrar o termo script neste livro e em outros
que ler, mas lembre-se de que é apenas um sinônimo técnico de um programa
de computador.
INICIANDO COM A LINGUAGEM PHP
PHP é uma linguagem de programação verdadeira, com todas as estruturas de
programação, mas tem uma forte ligação com os delimitadores ou marcado-
res de campos HTML, mais conhecidos pelo nome original oriundo do inglês,
TAG HTML.
O site oficial do PHP é o <php.net>, ali você vai encontrar tudo sobre PHP de
todas as versões que já foram lançadas. Não é uma ferramenta de aprendi-
zagem, mas um repositório de consulta com muitos exemplos. Você encon-
trará neste site um conteúdo estilo manual de utilização:
<http://www.php.net/manual/en/index.php>.
Introdução
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
46 - 47
©
sh
ut
te
rs
to
ck
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
48 - 49II
OS DELIMITADORES
(TAGS)
O interpretador do servi-
dor identifica um código
PHP por meio de dois deli-
mitadores que indicam o
início e o fim do programa
ou trecho de programa. Esses
delimitadores são o <?php para o início e o ?> para representar o fim. Porém,
para o início, é possível utilizar a abreviação <?, sendo que para isto é necessá-
rio habilitar a opção short-tags na configuração do servidor PHP.
<?php
/* Código PHP */
?>
Ou preferencialmente:
<?
/* Código PHP */
?>
Nossos exemplos seguirão este modelo abreviado.
Para imprimir uma frase no vídeo, em HTML, basta escrevê-la no corpo
do arquivo com a terminação “.htm” ou “.html” e pronto. O código-fonte em
HTML fica assim:
<html>
<body>
Esta frase aparecerá no vídeo.
</body>
</html>
Porém, no código PHP, é necessário delimitar com as tags específicas e uti-
lizar funções específicas e, além disso, o arquivo deverá ter a extensão “.php” em
vez de “.htm” ou “.html”.
Por mais simples que sejam, nossos exemplos imprimem os resultados na
Iniciando com a Linguagem PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
48 - 49
tela do navegador, portanto, precisamos conhecer, neste momento, um comando
PHP chamado echo,que serve para imprimir alguma coisa na tela do navegador.
Apesar de não ser obrigatório, quando utilizarmos o comando echo vamos
sempre utilizar o conteúdo a ser mostrado na tela, entre parênteses, por uma
questão de organização e estética.
Adiantando outro detalhe muito importante, todas as linhas de comando
PHP precisam ser terminadas por ponto e vírgula.
<?
echo(“<html>”);
echo(“<body>”);
echo(“Esta frase aparecerá no vídeo.”);
echo(“</body>”);
echo(“</html>”);
?>
É possível também mesclar os dois códigos (HTML e PHP), mas da mesma
forma que o exemplo anterior (100% PHP), o arquivo misto deverá ter exten-
são “.php”.
<html>
<body>
<?
echo(“Esta frase aparecerá no vídeo.”);
?>
</body>
</html>
COMENTÁRIOS
Comentários são linhas no código fonte que não têm efeito de programação,
servem apenas para o programador documentar o programa.
Há dois tipos de comentários no código PHP:
Os comentários de uma linha, indicados preferencialmente por duas barras
“//” e opcionalmente pelo sinal “#”.
A partir de agora, durante o decorrer deste livro, não será necessário utilizar
os delimitadores de PHP <??> nos exemplos, pois você já sabe que sempre
que for programar em PHP, é obrigatório usar estes delimitadores no seu
código. Correto?
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
50 - 51II
Comentários de mais de uma linha, delimitados pelos caracteres “/*” para
o início do bloco e “*/” para o final do bloco comentado.
Exemplo 1:
// Estas linhas são comentários e não têm efeito de pro-
gramação,
// nem precisam ser terminadas por ponto e vírgula.
Exemplo 2:
/*
Este bloco é um comentário, podem ser colocadas aqui
quantas linhas forem necessárias, e
também não precisam ser terminadas por ponto e vírgula.
*/
SEPARADOR DE INSTRUÇÕES
A exemplo de linguagens como C/C++, Pascal, Java, Perl e outras, PHP exige
que cada linha de comando seja terminada como ponto e vírgula. Em comen-
tários e na última instrução do bloco delimitado pelos sinais acima descritos,
não é necessário o uso do ponto e vírgula.
<?
echo(“primeiro comando em PHP”);
echo(“segundo comando em PHP”);
// ----------------------------
echo(“o último comando em PHP não exige ponto e vírgula”)
?>
Tipos de Dados Suportados pelo PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
50 - 51
TIPOS DE DADOS SUPORTADOS PELO PHP
Alguns programadores costumam dizer que o PHP não define o tipo para as
variáveis, mas o que ele utiliza é uma checagem dinâmica de tipos, por isso, uma
única variável pode receber valores de tipos diferentes em momentos diferen-
tes da execução do programa.
O interpretador PHP (no servidor) detectará automaticamente o tipo de
cada variável por meio da verificação do conteúdo durante toda a execução do
programa. Dentro desse conceito, o PHP suporta os seguintes tipos de dados:
■ Inteiro.
■ Real (Ponto flutuante).
■ Caracteres (char).
■ Cadeias (sequências ou arranjos) de caracteres (String).
■ Cadeias (sequências ou arranjos) de dados (Array).
■ Objeto (somente para a programação orientada a objetos).
Mesmo com essa interpretação automática, o programador pode converter expli-
citamente os valores de um tipo em outro desejado, utilizando o typecasting ou a
função settype(), ambos serão debatidos no item “Transformação de Tipos (cast)”.
NOMES DE VARIÁVEIS
Toda variável no PHP deve ter seu nome inicializado pelo caractere “$”, e após
ele, vem uma sequência de caracteres que deve ser iniciada por uma letra ou
pelo caractere “_”.
Exemplos:
$valor_1 = 36;
$valor_2 = 45;
$soma = $valor_1 + $valor_2;
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
52 - 53II
Como o PHP é “case sensitive”, uma letra maiúscula é diferente de uma
minúscula, tradicionalmente, os programadores utilizam letras minúsculas para
compor o nome das variáveis e maiúsculas para compor o nome das constantes,
fato produtivo, pois diferencia as variáveis criadas pelo programador das ine-
rentes à linguagem, que possui muitas variáveis pré-definidas cujos nomes são
compostos por letras maiúsculas.
A seguir são explicados os tipos de dados suportados pela linguagem.
NÚMEROS INTEIROS (INTEGER OU LONG)
Uma variável pode conter um valor inteiro “curto” ou “longo”. A diferença entre
eles é o número de bytes utilizados para armazená-los na memória, porém, isso
também é indiferente transparente para o programador, pois quem define é o
interpretador, de acordo com as necessidades do momento.
Exemplos:
$valor = 456;// inteiro positivo na base decimal
$valor = -456;// inteiro negativo na base decimal
$valor = 0710;// inteiro na base octal (todo número inicia-
lizado por 0 é octal)
$valor = 0x1C8;// inteiro na base hexa (todo número inicia-
lizado por 0x é hexa)
NÚMEROS REAIS (FLOAT OU DOUBLE)
Uma variável pode conter um valor real (ponto flutuante) “curto” ou “duplo”. A
diferença entre eles é o número de bytes utilizados para armazená-los na memó-
ria, porém, da mesma forma que o inteiro, isso também é indiferente transparente
para o programador.
$valor = 1.456;// Real positivo igual a 1,456
$valor = -1.456; // Real negativo igual a -1,456
$valor = 45e1;// Real positivo em notação científica (450)
Tipos de Dados Suportados pelo PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
52 - 53
CADEIAS DE CARACTERES (STRINGS)
Strings são sequências de caracteres contíguos armazenados em uma sequên-
cia de bytes contíguos.
Para atribuir valores para variáveis basta envolver a frase ou nome por aspas
ou apóstrofes.
Exemplos:
$nome = “Carlos Benedito”;
$sobrenome = “Sica de Toledo”;
ou
$nome = ‘Carlos Benedito’;
$sobrenome = ‘Sica de Toledo’;
Para imprimir um texto é tão simples como atribuir ele para uma variável.
Exemplo:
echo (“CESUMAR”);
ou
echo (‘CESUMAR’);
Para imprimir variáveis do tipo string também não traz nenhum segredo.
Exemplo:
echo($nome);
Porém, quando vamos juntar tudo isto, é necessário tomar muito cuidado, pois
a utilização das aspas e das apóstrofes neste ato pode confundir o programador.
Envolver o nome da variável pelas aspas não modifica o resultado, o valor
da variável será impresso normalmente.
Exemplos:
echo(“Nome: $nome $sobrenome”);
O nome completo (nome e sobrenome) contido nas duas variáveis será
impresso, precedido pela palavra Nome: e separado por um espaço em branco
explicitado no comando entre as duas variáveis. O resultado final será este:
Nome: Carlos Benedito Sica de Toledo
De forma diferente, envolver o nome da variável pelas apóstrofes implicará
em imprimir textualmente o nome dela, e não o valor.
Exemplo:
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
54 - 55II
echo(‘O conteúdo da variável $nome é: ‘);
echo($nome);
E o resultado será:
O conteúdo da variável $nome é: Carlos Benedito
Algumas vezes será necessário imprimir a própria aspas e apóstrofe. Quando
for o caso, utilize o caractere de controle conhecido como contrabarra, também
conhecido como barra invertida precedendo o apostrofe ( \’ ).
Exemplo:
echo(‘O conteúdo da variável \’$nome\’ é: ‘);
echo(“\’$nome\’”);
E o resultado será:
O conteúdo da variável ‘$nome’ é: ‘Carlos Benedito’.
A seguir serão apresentados outros caracteres de controle.
ALGUMAS FUNÇÕES DE STRING
strlen() Retorna o tamanho
de uma string (os
espaços são conta-
dos).
$str = “abcdef”;
echo strlen($str);
Resultado:
6
str_replace() Procura uma subs-
tring dentro da
string e substitui por
outra.
$str = “linha\n”;
$str=str_replace(“\n”,”<br>”,$str);
echo($str);
Resultado:
linha
strpos() Encontra a posição
de uma substring
dentro da string. A
primeira posição é 0
(zero).
$str = “abcdef”;
echo strpos($str,”f”);
Resultado:
5
Quadro 9: Função String
Algumas funções de String
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
54 - 55
CARACTERES DE CONTROLE
Os caracteres de controle são pré-definidos pela linguagem e utilizados espe-
cificamente para realizar uma ação. Quando você precisar imprimir um desses
caracteres, sempre preceda-o pela contrabarra.
SINTAXE RESULTADO IMPRESSO AÇÃO SEM A CONTRABARRA
\\ Imprime a contrabarra \ Caractere de controle
\$ Imprime o símbolo $ Preceder o nome de uma
variável
\’ Imprime uma apóstrofe ‘ Envolver uma string
\” Imprime uma aspa “ Envolver uma string
Quadro 10: Sintaxe dos caracteres de controle
Exemplo:
$salário = “15.230,23”;
echo(“O salário é de R\$ “);
echo ($salário);
Resultando na frase: O salário é de R$ 15.230,23.
QUEBRA DE LINHA
Como os resultados de um script PHP sempre serão mostrados no navegador,
é necessário utilizar a tag<br> para quebrar uma linha de texto no navegador
(simulando um Enter).
Sempre que quisermos iniciar a impressão em uma nova linha, colocamos
esta tag dentro da string, ao final da linha a ser impressa.
Exemplo:
echo(“Linha1<br>Linha2<br>”);
Resultado:
Linha1
Linha2
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
56 - 57II
CARACTERES DE CONTROLE DE TEXTOS NÃO HTML
Existem três outros caracteres de controle que não podem ser impressos e nem
servem para comandar os Navegadores de Internet, porém podem constar em
arquivos do tipo texto que eventualmente serão manipulados pelos seus progra-
mas escritos em PHP.
SINTAXE RESULTADO
\n Nova linha
\r Retorno de carro
\t Tabulação horizontal
Quadro 11: Caracter do tipo texto
A constante \r e a constante \n significam, respectivamente, retorno do cursor
para o início da linha e mudança do cursor para uma nova linha. Não são utili-
zadas pelonavegador, mas por arquivos tipo texto.
ARRANJOS DE DADOS (ARRAYS)
Este tipo de dado pode ser chamado de: cadeia, vetor, sequência, ou ainda em
inglês, array.
O valor de uma posição do array deve ser acessado por meio de seus índi-
ces, que podem ser valores de qualquer tipo e não somente inteiros, inclusive do
tipo string. Além disso, se os índices forem todos inteiros, não precisarão for-
mar uma sequência contínua.
A composição do nome de um array segue a mesma regra das outras vari-
áveis, por exemplo, a variável $coisas pode receber um inteiro ou um array. A
atribuição dos valores é simples.
Exemplo
$coisas = ARRAY( “Casa”, “Facul”, “Prédio”, “Cama”, “Vaso”,
“Bike”, “Telha”, “Carro”, “Moto”);
Quando um array é criado sem especificar os índices, eles são criados auto-
maticamente a partir do zero.
Algumas funções de String
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
56 - 57
VALOR CASA FACUL PRÉDIO CAMA VASO BIKE TELHA CARRO MOTO
Índice 0 1 2 3 4 5 7 8 9
Para acessar um valor, por exemplo, para imprimir, utilize o índice entre
colchetes.
Exemplo:
echo($coisas[3]);
Este comando imprimirá:
Cama
Como a checagem dos tipos no PHP é dinâmica, tanto os valores como os
índices podem ser de tipos diferentes.
Exemplo:
$cor[1] = “vermelho”;
$cor[2] = “verde”;
$cor[3] = “azul”;
$cor[“teste”] = 1;
O código acima pode ter outra sintaxe, com o mesmo efeito:
$cor = array(1 => “vermelho”, 2 => “verde”, 3 => “azul”,
“teste” => 1);
VALOR VERMELHO VERDE AZUL 1
Índice 1 2 3 teste
Como você já deve ter percebido, um vetor pode ser criado de várias maneiras:
■ Com a utilização da função array(), declarando somente os valores e os
índices, serão criados automaticamente:
$vetor = array(3, 5, 9, 11);
■ Utilizando a mesma função, mas explicitando os índices na declaração:
$vetor = array(0=>3, 1=>5, 2=>9, 3=>11);
Nesta forma, o primeiro elemento antes do símbolo de associação (=>) é o índice
do vetor e, o segundo, o valor atribuído ao elemento.
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
58 - 59II
■ O arranjo pode ainda ser criado com a simples atribuição de cada valor
ao índice específico. Isto pode ser feito manualmente ou utilizando uma
estrutura de repetição “for”.
$vetor[0] = 3;
$vetor[1] = 5;
$vetor[2] = 9;
$vetor[3] = 11;
Existem duas funções PHP que facilitam a impressão dos arrays:
print_r($cor);
e
var_dump($cor);
Para que o usuário receba as informações formatadas, melhor utilizar a dupla
de tags de formatação HTML <pre></pre>.
Exemplo:
echo(“<pre>”);
print_r($cor);
echo(“</pre>”);
Resultado:
ARRAY(
[0]=> Vermelho
[1]=> Verde
[2]=> Azul
)
ALGUMAS FUNÇÕES DE ORDENAÇÃO ARRAYS
A biblioteca PHP oferece um conjunto de funções que servem para ordenar o
conteúdo do array. Vamos conhecer cada uma delas na tabela abaixo:
Algumas funções de Ordenação Arrays
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
58 - 59
sort($array) Ordena os valores do array
em ordem crescente
echo(“<pre>”);
$array = (“Maria”, “Car-
los”, “Wilson”);
print_r($array);
sort($array);
print_r($array);
echo(“</pre>”);
rsort($array) Ordena os valores do array
em ordem decrescente
echo(“<pre>”);
$array = (“Maria”, “Car-
los”, “Wilson”);
print_r($array);
asort($array);
print_r($array);
echo(“</pre>”);
asort($array) Ordena o array com índi-
ces nomeados em ordem
crescente do valor
echo(“<pre>”);
$array = (“idade”=>23,
“peso”=>75);
print_r($array);
asort($array);
print_r($array);
echo(“</pre>”);
arsort($array) Ordena o array com índi-
ces nomeados em ordem
decrescente do valor
echo(“<pre>”);
$array = (“idade”=>23,
“peso”=>75);
print_r($array);
asort($array);
print_r($array);
echo(“</pre>”);
ksort($array) Ordena o array com índi-
ces nomeados em ordem
crescente do índice
echo(“<pre>”);
$array = (“idade”=>23,
“peso”=>75);
print_r($array);
asort($array);
print_r($array);
echo(“</pre>”);
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
60 - 61II
krsort($array) Ordena o array com índi-
ces nomeados em ordem
decrescente do índice
echo(“<pre>”);
$array = (“idade”=>23,
“peso”=>75);
print_r($array);
asort($array);
print_r($array);
echo(“</pre>”);
Quadro 12: Funções de ordenação de array
LISTAS (LISTS)
As listas são utilizadas no PHP para realizar atribuições múltiplas. Utilizando
as listas, é possível atribuir os valores que estão em um array para um conjunto
de variáveis.
Esta é uma forma de separar um array em várias variáveis, tornando os dados
independentes, porém, é importante destacar que só são atribuídos às variáveis
da lista os elementos do array que possuem índices inteiros e não negativos.
Exemplo:
list($a, $b, $c) = array(“a”, “b”, “c”);
O comando acima atribui valores às três variáveis comuns ($a, $b, $c), simul-
taneamente, com base nos valores contidos no array.
Outra forma de criar uma lista de variáveis a partir de uma array existente
é mostrada no exemplo a seguir.
Exemplo:
$arr = array(0=>”um”,1=>”dois”,2=>”três”,3=>”quatro”);
list($a,$b,$c,$d) = $arr;
echo(“<pre>”);
print_r($arr)
Algumas funções de Ordenação Arrays
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
60 - 61
Após a execução do código acima, os seguintes valores são atribuídos:
ARRAY(
[0]=>um
[1]=>dois
[2]=>três
[3]=>quatro
)
TRANSFORMAÇÃO DE TIPOS (CAST)
A transformação de tipos no PHP pode ser feita de três maneiras:
■ automaticamente (cast automático ou coerção);
■ explicitamente pelo usuário, utilizando o typecast; ou
■ utilizando a função settype().
No primeiro caso, quando ocorrem determinadas operações que envolvem dois
valores de tipos diferentes, o PHP converte o conteúdo de um deles automatica-
mente para adequar o resultado sem, porém, alterar o valor contido no operando.
O tipo no qual os valores dos operandos serão convertidos tem a ordem de pre-
cedência mostrada na tabela abaixo.
ORDEM UM DOS OPERANDOS É: O OUTRO É TRANSFORMADO EM:
1 Real (float) Real (float)
2 Inteiro Inteiro
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
62 - 63II
Uma string é convertida em um número real ou inteiro quando começada
por um número de acordo com a análise realizada pelo interpretador e, no caso
de começar por uma letra, será convertida em zero.
O interpretador descobre e aceita sinais precedendo números, pontos que
representam as casas decimais e a letra e ou E como exponencial.
$valor = 3e2; // $valor recebe 300, que é 3 x 102
echo($valor); // imprime 300
No segundo caso, a transformação explícita dos tipos deve explicitar-se no
tipo de dado de forma semelhante a da linguagem C, escrevendo o novo tipo
entre parênteses antes do valor a ser convertido.
$valor_real = 3.2; // cria uma variável ‘real’
echo($valor); // imprime 3.2
$valor_int = (int)$valor; // converte para inteiro
echo($valor_int); // imprime 3
Abaixo a o quadro com as palavras-chave aceitas para compor o cast.
CAST TIPO
int ou integer Inteiro
real, double ou float Real com ponto flutuante
string Cadeia de caracteres
array Vetor indexado
Quadro 13: Palavras-chaves para o cast
Finalmente, utilizando a função settype(), que converte uma variável no tipo
especificado, que pode ser “integer”, “double”, “string”, “array” ou “object”.
Exemplo:
$valor = 15; // $valor é integer
settype($valor,double); // muda $valor para double
Algumas funções de Ordenação Arrays
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.62 - 63
VERIFICAÇÃO DO TIPO DE UMA VARIÁVEL
Como já foi analisada anteriormente, a tipagem utilizada pelo PHP é dinâmica,
portanto, nem sempre o programador sabe qual o tipo de uma variável em deter-
minado instante. Por isso existem duas maneiras de verificar o tipo delas:
■ Utilizando a função gettype(), que retorna o tipo da variável testada indi-
cada por uma das seguintes strings: “integer”, “double”, “string”, “array”,
“object” e “unknown type”.
Exemplo:
echo(gettype($var));
■ E por meio das funções que testam o tipo da variável, são elas:
is_int(), is_integer(), is_real(), is_long(), is_float(), is_string(), is_array()
e is_object().
Todas estas funções retornam verdadeiro se a variável for do tipo perguntado
e falso em caso contrário.
Exemplo:
if(is_float($var)){
…
}
else{
…
}
Esta estrutura de comparação (também conhecida como seleção) é expli-
cada na unidade específica.
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
64 - 65II
VARIÁVEIS
As variáveis são os espaços da memória utilizados para guardar valores que
podem ser modificados pelo programa. A criação de uma variável corresponde
à ação do sistema de reservar um determinado espaço na memória do tamanho
adequado para guardar o dado desejado. O tamanho do espaço que cada variá-
vel vai utilizar na memória depende do seu tipo.
ESCOPO DAS VARIÁVEIS
Podemos notar que o conceito de funções aparece logo no início do aprendizado
da linguagem. Uma função é um trecho ou módulo de programa delimitado,
que executa uma ação específica. Pode estar pronta, na biblioteca do PHP, mas
também pode ser escrita pelo programador, este segundo tipo será explicado no
item “Funções definidas pelo usuário”.
O escopo de uma variável é o tempo de vida dela, o que está diretamente rela-
cionado com o módulo do programa que ela foi criada, no qual ela é visível ou
acessível, portanto, o escopo varia de acordo com o local onde ela foi declarada.
Conforme o resumo mostrado no quadro abaixo, as variáveis podem ser
declaradas em três lugares básicos que definem o seu escopo:
■ no programa principal – desta forma se tornam acessíveis por todo o pro-
grama e pelas funções, por este fato são chamadas de globais;
■ dentro das funções – o que as torna visíveis (ou acessíveis) somente para
a função que as criou, assim que a função for encerrada este tipo de vari-
ável morre;
■ na lista de parâmetros – uma cópia da variável (valor) ou o seu endereço
(referência) é enviado para a função chamada.
Variáveis
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
64 - 65
LOCAL DA DECLARAÇÃO ESCOPO
Dentro das funções Variáveis locais
Fora de todas as funções Variáveis globais
Na lista de parâmetros das funções Parâmetros formais
Quadro 14: Local de declaração do escopo da variável
VARIÁVEIS LOCAIS
As variáveis locais são declaradas dentro de uma função e só podem ser refe-
renciadas por comandos que estão dentro do bloco no qual estão declaradas.
Uma variável local é criada no momento da sua declaração e destruída na saída
da função.
function funcao1(){
$x = 10;
}
function funcao2(){
$x = -199;
}
funcao1();
funcao2();
Neste exemplo, pode parecer que a variável inteira $x é declarada erroneamente,
duas vezes, uma vez em funcao1() e outra em funcao2(), porém, o $x em fun-
cao1() não tem nenhuma relação ou correspondência com o $x em funcao2(),
porque estão em blocos de códigos diferentes.
Cada função tem seu próprio escopo.
VARIÁVEIS GLOBAIS
Ao contrário das variáveis locais, as variáveis globais são declaradas fora das
funções e reconhecidas pelo programa inteiro, assim, podem ser utilizadas em
qualquer bloco do código do programa, desde que explicitadas pela diretiva global.
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
66 - 67II
Exemplo:
$conta=340; // esta é uma variável global
function teste(){
$conta = 100;
echo(“O valor de conta é “,$conta);
}
Quando a função teste for chamada.
teste();
O resultado da impressão será: “O valor de conta é 100”, pois prevalece o
valor da variável local.
Caso exista uma variável global e uma local com o mesmo nome, a variável
com o escopo local é acessada prioritariamente ali.
Vejamos outro exemplo de duas variáveis, uma global e outra local com o
mesmo nome. O escopo de cada uma é respeitado.
function teste(){
$z=5;
echo(“durante: $z<br>”);
}
$z=3;
echo(“antes : $z<br>”);
teste();
echo(“depois : $z<br>”);
Resultado:
antes: 3
durante: 5
depois: 3
O MODIFICADOR DE ESCOPO ‘GLOBAL’
Uma variável de escopo global pode ser utilizada no interior de uma função
(escopo local), porém, é necessário explicitar esta intenção com a aplicação do
modificador global, que pode conter diversas variáveis, separadas por vírgulas.
Variáveis
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
66 - 67
function globo(){
global $valor,$res;
echo(“Valor inicial: “);
echo ($valor);
echo(“, resultado final: “);
echo($res);
}
$valor = 100;
$res= 10 * $valor;
globo();
Resultado:
Valor inicial: 100, resultado final: 1000.
Outra maneira de acessar as 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 próprio nome da variável, sem o caractere $.
O exemplo abaixo produzirá o mesmo resultado do anterior.
$valor = “variável global”;
function globo(){
echo($GLOBALS[“valor”]);
}
globo();
O resultado impresso será: variável global.
O ADAPTADOR DE ESCOPO ‘STATIC’
Uma variável quando precedida pelo modificador static dentro de uma função é
chamada de estática, porque é visível naquele escopo local, mas é inicializada apenas
uma vez e seu valor não é perdido quando a execução do script deixa esse escopo.
function teste(){
static $z = 0;
echo(“a variável z vale: $z”);
$z++;
}
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
68 - 69II
As variáveis declaradas como estáticas são mantidas vivas ao terminar a exe-
cução da função, preservando o valor nelas armazenados.
Na próxima execução da função, ao encontrar novamente a declaração da
variável, precedida pelo modificador static, o último valor daquela variável
será recuperado. Portanto, uma variável declarada com esse modificador tem o
mesmo “tempo de vida” de uma variável global, porém, sua visibilidade é res-
trita ao escopo local no qual foi declarada.
Para testar o exemplo acima, não se esqueça de chamar a função “mais de
uma vez” no mesmo script.
teste(); // imprime “a variável z vale: 0”
teste(); // imprime “a variável z vale: 1”
VARIÁVEIS VARIÁVEIS
O PHP tem um recurso conhecido como “variáveis variáveis”, ilustrado abaixo.
Este artifício consiste em variáveis cujos nomes também podem variar, ou
seja, não somente o valor, mas o nome de uma variável pode ser modificado.
Sua aplicação é feita com a utilização do duplo cifrão ($$) precedendo o
nome da variável.
NOME DA VARIÁVEL ENDEREÇO DA MEMÓRIA CONTEÚDO DA MEMÓRIA
$a 201 (fictício) simples
...
$$a ou $simples 300 (fictício) dupla
Quadro 15: Exemplo de variáveis
Exemplo:
$a = “simples”;
$$a = “dupla”;
A forma de escrever pode variar como segue com o mesmo efeito:
$a= “simples”;
$simples = “dupla”;
Variáveis
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
68 - 69
Este conceito se assemelha aos ponteiros da linguagem C/C++, pois, conside-
rando que o nome de uma variável é o apelido do seu endereço, o conceito de
variável remete ao conceito de ponteiros: “...posição nomeada da memória...”,
portanto, $a aponta para o endereço201, cujo conteúdo é “simples”, e como “sim-
ples” é o nome de uma variável ela tem o endereço 300 e, por sua vez, aponta
para o conteúdo “dupla”.
VARIÁVEIS EXTERNAS AO PHP
Para produzir uma navegação interativa, a linguagem Web nativa, que é o HTML,
deve se comunicar com o PHP permitindo o envio de dados (valores) atribuí-
dos a variáveis no navegador.
Essas variáveis podem ser criadas de duas formas:
■ escrevendo-as literalmente no endereço Web chamado; e
■ partindo de formulários compostos por campos preenchidos pelo usuário.
Nos dois casos, as informações são enviadas para o script PHP por meio da cha-
mada da página mediante o navegador.
OS MÉTODOS DE INTERAÇÃO
Os navegadores enviam os valores dessas variáveis para o servidor baseando-se
em dois métodos: GET e POST.
■ O primeiro agrega os nomes das variáveis e seus respectivos valores conca-
tenando essa lista ao final do endereço Internet (URL) buscado, tornando
os nomes e valores das variáveis visíveis ao usuário.
■ Já o método POST transmite todas as informações de entrada do <form>
para o script PHP em um bloco de dados endereçado ao endereço Internet
(URL), de forma que o usuário não as veja.
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
70 - 71II
O método GET, pelo fato de passar a lista de variáveis agregada ao final do URL,
permite que o usuário escreva essas variáveis e seus respectivos valores direta-
mente no navegador, como no exemplo fictício abaixo:
www.sica.pro.br/sica/teste.php?var1=33&var2=65
O script “teste.php”, exemplificado abaixo, receberá duas variáveis (var1 e
var2) com seus respectivos valores e deverá capturá-las pelo array pré-definido
$_GET[], cujos índices são os nomes das variáveis passadas:
$variavel1 = $_GET[“var1”];
$variavel2 = $_GET[“var2”];
$resultado = $variavel1 * $variavel2;
echo(“O resultado de $variavel1 * $variavel2 é $resultado”;
Esta técnica manual raramente é utilizada, porque o cliente não saberia digi-
tar tudo isto na linha de navegação.
A forma usual é a utilização de formulários de coleta de dados, que são deli-
mitados pelas tags HTML <form></form>. Neste caso, o programador pode
optar entre o método GET ou POST para enviar os dados para o servidor.
Quando os dados são enviados para um script PHP, todas as variáveis do
formulário são automaticamente disponibilizadas para o script, pelos arrays $_
GET[] ou $_POST[], dependendo do método previamente escolhido.
A sintaxe utilizada pelo PHP para receber as variáveis pelo método POST
é semelhante a do GET.
$variavel1 = $_POST[“var1”];
$variavel2 = $_POST[“var2”];
CUIDADOS AO TRANSMITIR VARIÁVEIS PELA INTERNET
O atributo enctype em um formulário é opcional e define o tipo de codificação
dos dados a serem enviados ao servidor. Este atributo pode receber três valo-
res: “multipart/form-data” ou “application/x-www-form-urlencoded”, ou ainda
“text/plain”.
O valor padrão em caso de omissão é “application/x-www-form-urlencoded”,
que atende a maioria dos casos de transmissão de dados entre scripts. Assim, por
Variáveis
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
70 - 71
padrão, os conteúdos das variáveis são passados no formato URLencode, que é
obtido substituindo os espaços pelo caractere “+” e todos os outros caracteres
não alfanuméricos, com exceção do sublinhado (“_”) pelo caractere %, seguido
do código ASCII em hexadecimal.
Por exemplo, o texto “CESUMAR - EAD” em URLencode fica
“CESUMAR+%2D+EAD”. O número hexadecimal 2D representa o traço no
formato citado. Se o texto transmitido contiver quebras de linha, estas serão
representada pelo código %0D%0A, que significa retorno de carro (CR) e ali-
mentação de linha (LF), respectivamente.
O PHP possui duas funções para tratar o texto no formato URLencode, cujos
protótipos são os seguintes:
string urlencode(string texto);
string urldecode(string texto);
Essas funções servem, respectivamente, para codificar ou decodificar um
texto passado como argumento, mas no caso de um envio a partir de um for-
mulário, a codificação é automática.
Quando se transmite vários tipos de dados a partir de um mesmo formulário,
por exemplo, no caso do upload de arquivos, é obrigatório o uso do valor “multi-
part/form-data”, que indica a presença de diferentes tipos de dados. Este tipo de
agregação de informações é chamado de Multipurpose Internet Mail Extensions,
que permite a transferência de dados em formatos múltiplos.
Exemplo:
<form action = “./fotolog.php”
method = “post”
name = “form”
enctype = “multipart/form-data”>
<input type = “file” name=”foto”>
<textarea cols=50 rows=5 name=”descricao”></textarea>
<input type = “submit” value=”Enviar”>
</form>
No último caso, o “text-plain”, os espaços são convertidos para “+”, porém
os demais caracteres não são modificados.
Caro(a) aluno(a), o conhecimento de HTML para desenvolver programas
para a Internet, seja em qualquer linguagem, é essencial. Se você ainda
não domina HTML, estude em paralelo para que possa dar continuidade ao
aprendizado de PHP.
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
72 - 73II
Como os formulários escritos em HTML em regra enviam dados para enti-
dades como Bancos de Dados e outros, a preparação dos dados para envio pela
rede também deve ser feita. O atributo “accept-charset” especifica a lista de con-
juntos de caracteres que são aceitos pelo servidor durante o processamento dos
dados do formulário.
<form action =”script.php”
method = “post”
name = “form”
enctype = “multipart/form-data”
accept-charset = “ISO-8859-1”>
<input ... >
</form>
A UTILIZAÇÃO DE FORMS
Um campo de formulário definido como <input type=“text” name=“cidade”>,
ao ser enviado a um script PHP, fará com que seja criada uma posição no array
GET ou POST com o índice “cidade”, portanto, a variável descrita acima deve ser
acessada como $_GET[‘cidade’] ou $_POST[‘cidade’], dependendo do método
especificado no formulário.
Na prática, deve-se utilizar o código HTML abaixo para criar um formulário
e o código PHP para receber e trabalhar com a variável enviada pelo formulário.
Exemplo HTML: formulário que coletará os dados para enviar ao script PHP.
Variáveis
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
72 - 73
<form action=”seu_script.php” method=”post” enctype=”mul-
tipart/form-data”>
<input type=”text” name=”cidade”>
<input type=”submit” value=”Enviar”>
</form>
Exemplo PHP: script PHP que receberá os dados enviados pelo formulário.
<?
$cidade = $_POST[‘cidade’];
echo($cidade);
?>
VARIÁVEIS DE AMBIENTE
As variáveis de ambiente são ajustadas no momento em que o servidor executa
um script PHP solicitado.
Existem dois tipos de variáveis de ambiente: as com valores independentes
da requisição, contendo informações básicas, e as que variam com cada execu-
ção do script.
As variáveis $PHP_SELF e $PATH_INFO, por exemplo, contêm o nome
e o caminho do arquivo do próprio script. Outras contêm informações sobre
o navegador do usuário, o servidor http, a versão do PHP etc. Para obter uma
listagem de todas as variáveis e constantes de ambiente e seus respectivos conte-
údos, invoque a função PHPinfo() inerente ao ambiente PHP, que ela imprimirá
no navegador todas as variáveis de ambiente.
Exemplo:
<?
PHPinfo();
?>
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
74 - 75II
DESTRUINDO UMA VARIÁVEL EXPLICITAMENTE
O sistema do PHP destrói cada variável sempre que necessário, porém é possível
desalocar a memória utilizada por uma variável quando necessário, utilizando
a função unset(), que libera a memória e retorna verdadeiro caso a operação
seja bem-sucedida.Exemplo:
$a = 3;
echo($a); // imprime “3”
unset($a);
echo($a); // não imprime
VERIFICANDO SE UMA VARIÁVEL POSSUI UM VALOR
Existem dois tipos de funções que podem verificar se uma variável foi criada
ou inicializada (usualmente conhecida como ligada): a função isset() e a fun-
ção empty().
A função isset() retornará verdadeiro se a variável contiver algum valor
(estiver ligada, ainda que com uma string vazia ou o valor zero) e falso em caso
contrário.
Exemplo: Um campo de um formulário não foi preenchido e o script recebe
o campo não inicializado, ou seja, aquela posição do array estará nula.
if (!isset($_POST[‘cidade’]) echo(“O campo cidade não foi
preenchido”);
A função empty() retornará verdadeiro se a variável não contiver nenhum valor
(não estiver ligada), possuir um valor 0 (zero) ou uma string vazia. Caso con-
trário, retornará falso.
if (empty($_POST[‘cidade’]) echo(“O campo cidade não foi
preenchido”);
Constantes
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
74 - 75
CONSTANTES
Por definição, uma vez associado um valor a uma constante, o mesmo não poderá
mais ser alterado, além disso, uma constante só pode conter valores escalares,
sendo proibidos arrays e objetos.
Para definir as constantes, utiliza-se a função define(), que espera receber
dois parâmetros: o nome e o valor da constante após sua execução. Retornará
verdadeiro se for bem-sucedida e falso caso contrário.
Exemplo:
define (“PI”, 3.1415926536);
$raio= 3;
$circunf = 2*PI*$raio;
echo($circunf); // imprime 18.8495559216
Em contraste com os nomes das variáveis, tradicionalmente nós, programado-
res, utilizamos letras maiúsculas para compor os nomes das constantes.
CONSTANTES PRÉ-DEFINIDAS
O ambiente do servidor PHP possui algumas constantes pré-definidas, indi-
cando, por exemplo, a versão do PHP, o Sistema Operacional do servidor, o
arquivo em execução etc.
Como já foi citado, é possível enxergar todas as constantes predefinidas invo-
cando a função PHPinfo(), que exibe uma tabela contendo todas as variáveis e
constantes do sistema.
<?php
phpinfo();
?>
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
76 - 77II
OPERADORES
ATRIBUIÇÃO
O operador = é o operador básico de atribuição, mas existem outros derivados
dele, que sempre retornam o valor a ser atribuído na variável.
$a = 21;
No caso dos operadores derivados de atribuição, a operação é feita entre os
dois operandos antes da atribuição, sendo atribuído o resultado da operação ao
primeiro operando, especificado à esquerda da atribuição.
Exemplo:
A operação $a = $a + 30 pode ser escrita $a += 30;
Operadores de atribuição compostos são:
OPERADOR AÇÃO
= 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
Quadro 16: Operadores de atribuição
ARITMÉTICOS
Os operadores aritméticos são aplicáveis somente aos tipos numéricos (integer
ou float). Se forem de outro tipo, terão seus valores convertidos automaticamente
ou explicitamente de acordo com as regras descritas no item “Transformação de
tipos (cast)”, antes da realização da operação.
Operadores
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
76 - 77
Os operadores aritméticos são:
OPERADOR AÇÃO
- Subtração, também menos unário
+ Adição
* Multiplicação
/ Divisão
% Módulo da divisão (resto)
Quadro 17: Operadores aritméticos
Existem também dois operadores especiais chamados unários de incremento e
decremento.
OPERADOR AÇÃO
++ incremento
-- decremento
Quadro 18: Operadores de incremento e decremento
Eles podem ser especificados de duas formas: antes ou depois da variável. Quando
utilizado antes, retorna o valor da variável antes de incrementá-la ou decremen-
tá-la. Quando utilizado depois, retorna o valor da variável já incrementado ou
decrementado.
Exemplo:
$a = $b = 10; // $a e $b recebem o valor 10
echo(“$a - $b - $c - $d<br>”); // imprime 10 - 10 - -
$c = $a++; // $c recebe 10 e $a passa
a ter 11
$d = ++$b; // $d recebe 11, valor de
$b já incrementado
echo(“$a - $b - $c - $d”); // imprime 11 - 11 - 10 – 11
A ordem de precedência dos operadores aritméticos é como segue:
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
78 - 79II
MAIS ALTA ++, --
- (menos unário)
*, /, %
Mais baixa +, -
Quadro 19: Ordem de precedência dos operadores
LÓGICOS
Também conhecidos como operadores bit a bit, são muito utilizados para operar
sobre dois números inteiros representando valores booleanos, mas se aplicam a
qualquer tipo de dado.
Operadores lógicos são:
OPERADOR OPCIONAL AÇÃO
& AND e
| OR ou
^ XOR ou exclusivo
! NOT negação
Quadro 20: Operadores lógicos
A operação é realizada sobre cada bit entre os dois operandos, conhecida tam-
bém como operação bit a bit.
EXEMPLO ANÁLISE
Variável Decimal Binário
$b = 35; b 35 0010 0011
$c = 128; c 128 1000 0000
$a = $b | $c; a 163 1010 0011
Operadores
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
78 - 79
RELACIONAIS
Operadores relacionais são conhecidos também como operadores de comparação.
As comparações são feitas sempre entre dois valores que podem estar con-
tidos nas variáveis ou nas constantes.
Uma comparação sempre resulta em um valor booleano simulado, pois
qualquer valor diferente de zero é considerado verdadeiro e o valor exato zero
é considerado falso.
Os operadores lógicos relacionais implementados no PHP são:
OPERADOR AÇÃO EXEMPLO
== Igual ($a == b)
!= Diferente ($a != $b)
=== Idêntico ($a === $b)
verdadeiro se $a for igual a $b e eles forem do
mesmo tipo
!== Não idêntico ($a !== $b)
verdadeiro se $a for diferente de $b ou eles não
forem do mesmo tipo
Quadro 21: Operadores relacionais
Os operadores que estabelecem relação de quantidade ou grandeza entre dois
números são listados abaixo:
Observe que o símbolo da “relação de diferença” é composto pelo sinal de
igual (=) precedido pela negação (!).
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
80 - 81II
OPERADOR AÇÃO EXEMPLO
> Maior que ($a > $b)
>= Maior que ou igual ($a >= $b)
< Menor que ($a < $b)
<= Menor que ou igual ($a <= $b)
Quadro 22: Operadores relacionais de grandezas
Os resultados destas operações podem ser combinados utilizando os operado-
res lógicos relacionais E e OU listados no quadro abaixo.
OPERADOR AÇÃO EXEMPLO
&& E (($a > $b) && ($c < 0))
|| Ou (($a > $b) || ($c < 0))
Quadro 23: Operadores lógicos atuando sobre os relacionais
O primeiro exemplo significa “informe se a variável ‘a’ é maior que ‘b’ e também,
paralelamente, se a variável ‘c’ é menor que zero”. O resultado será verdadeiro
se os valores satisfizerem todas as exigências. Se apenas um falhar o resultado
será falso.
Maior !
>>= <<=
==
!=
&&
Menor ||
Quadro 24: Ordem de precedência dos operadores relacionais
CONCATENAÇÃO
Existe apenas um operador de concatenação e ele é exclusivo das operações rea-
lizadas com strings, cujo símbolo é o ponto.
Deslocar os bits de um valor uma vez para a esquerda significa multiplicar o
número por 2, e deslocar para a direita é o mesmo que dividir esse número
por 2.
Operadores
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
80 - 81
OPERADOR AÇÃO
. concatenação
Exemplo:
$nome = “Wilson”;
$sobrenome = “Mattos”;
echo($nome.” “.$sobrenome);
DE DESLOCAMENTO DE BITS
Emaplicativos científicos, é muito comum a utilização de operações que deslo-
cam os bits de um valor para a esquerda ou para a direita. O número de vezes
que os bits vão ser deslocados deve ser especificado.
OPERADOR AÇÃO
>> Desloca para a direita
<< Desloca para a esquerda
Quadro 25: Operadores de deslocamento de bits
Exemplo:
$a = 32; // a = 32(decimal), 0010 0000 (binário)
$b = $a >> 2;// b = 8(decimal), 0000 1000 (binário)
Resultado: Deslocou todos os bits 2 (duas) vezes para a direita.
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
82 - 83II
EXEMPLOS DE ALGUMAS FUNÇÕES DA BIBLIOTECA
PHP MATEMÁTICA
Nós estudamos todos os operadores, que na grande maioria, são aplicados na
matemática, mas a biblioteca PHP tem uma vasta gama de funções prontas para
fazer contas por você. Como apoio, vamos ver alguns exemplos:
FUNÇÃO COMENTÁRIO EXEMPLO
abs() Valor absoluto echo abs(-4.2); // 4.2
echo abs(-5); // 5
max() Maior valor echo max(1, 3, 5, 6, 7); // 7
echo max(array(2, 4, 6)); // 6
min() Menor valor echo min(1, 3, 5, 6, 7); // 1
echo min(array(2, 4, 6)); // 2
pi() Retornar o valor de PI $c = pi() * $raio
pow() Um número elevado à
potência (xy)
echo pow(-1, 20); // 1
echo pow(0, 0); // 1
echo pow(2 , 2); // 4
rand() Gera um número alea-
tório
echo rand($min, $max)
round() Arredonda um número
real
echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); // 4
echo round(1.95583, 2); //
1.96
echo round(1241757, -3); //
1242000
echo round(5.045, 2); //
5.05
echo round(5.055, 2); //
5.06
sqrt() Calcula a raiz quadrada echo sqrt(9); // 3
echo sqrt(10); // 3.16227766
sin() Calcula o seno em graus
radianos
echo sin(pi()); // 0
echo sin(60); // -0.304810621
Alguns Exemplos Adicionais
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
82 - 83
FUNÇÃO COMENTÁRIO EXEMPLO
cos() Calcula o cosseno em
graus radianos
echo cos(pi()); // -1
tan() Calcula a tangente em
graus radianos
echo tan(pi()); // 0
Quadro 26: Funções matemáticas do PHP
ALGUNS EXEMPLOS ADICIONAIS
Em geral, as datas são armazenadas e recuperadas no formato americano (AAAA-
MM-DD). Para utilizar no formato brasileiro (DD-MM-AAAA), podemos
utilizar duas técnicas para converter os formatos das datas.
O primeiro exemplo utiliza uma técnica simples com uma função da biblio-
teca já conhecida por nós, a função substr() .
$data = “2013-10-03”;
$dia = substr($data,8,2);
$mes = substr($data,5,2);
$ano = substr($data,0,4);
echo(“$dia/$mes/$ano”);
A segunda função faz a conversão inversa, recebe a data no formato brasileiro e
converte no formato americano.
$data=””03-10-2013”;
$dia = substr($data,0,2);
$mes = substr($data,3,2);
$ano = substr($data,6,4);
echo(“$ano-$mes-$dia”);
O site da W3Schools oferece um conjunto de tutoriais. Em muitos casos,
você poderá até mesmo testar o código-fonte que está aprendendo. É um
ambiente de autoaprendizagem que poderá ajudar muito no seu curso.
<http://www.w3schools.com/php/>.
84 - 85
A LINGUAGEM PHP
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
84 - 85II
CONSIDERAÇÕES FINAIS
Nesta unidade aprendemos todos os símbolos e algumas funções básicas para
criar programas bem simples escritos na linguagem PHP.
Este é apenas o começo, mas você terá oportunidade de se tornar um grande
programador para Internet, estudando e aprendendo os outros módulos que
seguem.
Mas agora você já pode escrever um pequeno script, incluindo o HTML,
para determinar se um número é par ou ímpar.
Veremos agora como construir programas mais complexos utilizando as
estruturas tradicionais de programação. Vamos aprender como comparar vari-
áveis e constantes, repetir trechos de programas e, também, como programar em
módulos chamados funções.
84 - 8584 - 85
1. A linguagem PHP trabalha com variáveis tipadas?
2. O que são Variáveis e como são compostos seus nomes?
3. O que são Constantes e como elas se diferenciam das Variáveis?
4. Quais são os operadores aritméticos e qual a sua ordem de precedência?
5. Deslocar um número inteiro de um bit para a direita significa qual operação ma-
temática? E para a esquerda?
6. O caractere de controle “\n” corresponde a uma “nova linha” e aparece na litera-
tura como parte do conjunto de caracteres de controle PHP. Por que os navega-
dores não respondem a esse controle?
7. O que é escopo de uma variável?
8. Sobre uma variável static, pode-se dizer que:
9. Explique as quatro formas de se criar arranjos (arrays) em PHP.
10. O que é uma lista e no que ela difere de um arranjo (array)?
11. Liste todas as variáveis externas e variáveis de ambiente do PHP utilizando a fun-
ção PHPInfo().
12. Desenvolva um programa em PHP que receba um número pelo método GET,
concatenado ao final do endereço do script, e calcule a raiz quadrada dele, apre-
sentando o resultado na tela do navegador, formatado como segue: “A raiz qua-
drada de 25 é: 5”.
13. Implemente um script que leia um número de um formulário e calcule a raiz
quadrada dele, apresentando o resultado na tela do navegador, formatado como
segue: “A raiz quadrada de 25 é: 5”.
14. Desenvolva um programa em PHP que receba um número pelo método GET, uti-
lizando um formulário, e calcule pelo menos o seno, o cosseno e a tangente dele,
apresentando o resultado na tela do navegador em forma de tabela.
Programação II (PHP)
Carlos Benedito Sica de Toledo
Editora: EAD Unicesumar
Sinopse: Este é o segundo livro de uma série. Neste livro são
estudadas algumas aplicações muito especiais com PHP que vão
tornar seus Sistemas para a Internet mais enriquecedores.
Este é um conjunto de cinco vídeoaulas sobre PHP.
<http://www.youtube.com/watch?v=Z4V6Dgxrcww&list=SPInBAd9OZCzx82Bov1cuo_
sZI2Lrb7mXr&index=0>.
MATERIAL COMPLEMENTAR
A LINGUAGEM PHP
U
N
ID
A
D
E III
Professor Me. Carlos Benedito Sica de Toledo
ESTRUTURAS DE
PROGRAMAÇÃO
Objetivos de Aprendizagem
■ Aprender as estruturas de comparação e repetição.
■ Entender sobre desvios de fluxo de programa.
■ Ser capaz de desenvolver um pequeno programa iterativo para a
Internet.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■ Quais são as estruturas de comparação, decisão ou seleção e como
aplicá-las
■ Quais são as estruturas de repetição ou iteração e como aplicá-las
■ Quais são os desvios explícitos
88 - 89
INTRODUÇÃO
Um programa, por princípio, é uma sequência de comandos que serão executa-
dos um a um, criando um fluxo natural de execução.
Este fluxo natural e sequencial pode ser quebrado quando, por decisão do
próprio programa, segundo determinadas condições, resolve mudar a sequência.
Na nossa vida também é assim, vamos ver um exemplo. Se estivermos cami-
nhando no parque e sentirmos sede, temos que parar e tomar água. Interrompemos,
então, o fluxo normal da caminhada, desviando do caminho, para matar a sede.
Uma estrutura de decisão tem esta semelhança lógica: estou caminhando,
se sinto sede, tomo água, senão continuo caminhando.
Outro exemplo bacana é quando você chega à lanchonete e se depara com
várias opções para matar a sede, por exemplo, água, água de coco e suco.
Esta unidade trata estes tipos de decisão entre outros e, além disso, dá um
destaque para o conceito de desvio de fluxo do programa.
ESTRUTURAS DE DECISÃO E SELEÇÃO
O PHP suporta duas categorias de estruturas: as de decisão (if) e as estrutu-
ras de seleção (switch). Ambas também podem ser chamadas de estruturas de
comparação.
Além dessas, existe o operador ternário “?” que é uma alternativa ao if em
certas circunstâncias.
ESTRUTURA “IF/ELSE”
Este tipo de estrutura de comparação, também conhecida como estrutura de
decisão, é utilizada para comparar dois valores. Eles podem estar contidos em
duas variáveis ou em uma variável e umaconstante. O objetivo é selecionar uma
opção entre as duas possíveis: a verdadeira ou a falsa.
Introdução
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
88 - 89
©shutterstock
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
90 - 91III
A execução da segunda opção significa um desvio condicional de fluxo de exe-
cução do programa.
A forma geral da sentença que utiliza o comando em inglês if é:
if(expressão){
Lista de comandos 1;
}else{
Lista de comandos 2;
}
Neste tipo de estrutura, a cláusula else é opcional, quando ela for omitida,
apenas a primeira lista de comandos estará em julgamento.
if(expressão){
Lista de comandos;
}
A “expressão” de comparação vai selecionar um deles, mas nunca ambos.
As frases “Lista de comandos 1” e “Lista de comandos 2” podem representar
um único comando, um bloco de comandos ou nada, pois a linguagem permite o
uso de um bloco vazio, desde que limitado pelos símbolos de abre e fecha chaves.
Quando se tratar de um único comando, os símbolos de abre e fecha chaves
podem ser omitidos sem prejuízo para o programa.
Estruturas de Decisão e Seleção
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
90 - 91
O resultado da expressão pode ser fruto de:
■ Uma comparação entre o conteúdo de duas variáveis ou de uma variável
e uma constante, com a utilização de qualquer operador relacional cons-
tante no item “Operadores relacionais”.
Exemplo 1:
if($nome == “Carlos”)
echo(“O nome $nome foi encontrado!”);
else
echo(“O nome $nome NÃO foi encontrado!”);
■ Da chamada de uma função que retorna um valor booleano como a isset()
descrita no item “Verificando se uma variável possui um valor” e gettype()
descrita no item “Verificação do tipo de uma variável”.
Exemplo 2:
if(!isset($nome))
echo(“A variável nome está vazia!”);
else
echo(“O nome é: $nome!”);
■ Do teste do valor de uma variável. Semelhante ao exemplo anterior, este
teste vai falhar se a variável estiver vazia (NULL).
Exemplo 3:
if($nome)
echo(“O nome é: $nome”);
else
echo(“A variável \$nome está vazia”);
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
92 - 93III
O ENCADEAMENTO IF/ELSE/IF
Uma construção comum em programação é o encadeamento if-else-if, com o
qual é possível criar uma sequência de comparações, assemelhando-a a uma
estrutura de escolha múltipla. O seguinte exemplo ilustra esta construção:
if( condição1 )
Lista de comandos 1;
elseif( condição2 )
Lista de comandos 2;
elseif( condição3 )
Lista de comandos 3;
else
Lista de comandos 4;
As expressões condicionais são avaliadas de cima para baixo. Assim que uma
condição verdadeira é encontrada, a declaração associada a ela é executada e o
resto do encadeamento é ignorado.
Se nenhuma das condições for verdadeira, então entra em ação o else final,
que atua como uma condição padrão; isto é, se todos os testes condicionais falha-
rem, a última declaração else será executada. Se o else final não estiver presente
e todas as outras condições forem falsas, então nenhuma ação será realizada.
OPERADOR TERNÁRIO “?”
O operador ternário “?” trabalha da seguinte forma:
expressao ? valor_caso_verdadeiro : valor_caso_falso;
Se a expressão for verdadeira, retornará valor_caso_verdadeiro, caso a
expressão seja falsa, retornará valor_caso_falso.
Exemplo:
$x = $y >0 ? $y : 0;
O trecho de código mostrado atribui à variável $x um valor de acordo com
a expressão “$y > 0”, ou seja, se $y for maior que 0 (zero), $x receberá o próprio
valor de $y, porém, se $y for um valor negativo ou zero, $x receberá 0 (zero).
Veja como ficaria o mesmo exemplo em um código convencional:
O Encadeamento If/Else/If
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
92 - 93
if($y > 0)
$x = $y;
else
$x = 0;
O segundo exemplo mostra como resumir uma expressão if-else.
if ($a >= 0)
$z = -99;
else
$z = 99;
A forma simplificada deste trecho, utilizando o operador ternário “?”, fica
da seguinte forma:
$z = $a >0 ? -99 : 99;
COMPARAÇÕES COM O “SWITCH/CASE”
O PHP tem ainda um comando de seleção com múltiplas opções: o switch. Esta
estrutura testa sucessivamente o valor de uma expressão, comparando o resul-
tado dela com uma lista de constantes inteiras ou de caracteres. Quando o valor
coincide, os comandos associados àquela constante são executados. A forma
geral do comando switch é:
switch(expressão){
case constante1:
sequência_de_comandos;
break;
case constante2:
sequência_de_comandos;
break;
case constante3:
sequência_de_comandos;
break;
...
default:
sequência_de_comandos;
}
Se, por exemplo, o break da sequência de comandos pertencentes à cons-
tante2 não existisse e essa constante fosse selecionada, os comandos da
constante3 também seriam executados até que o break fosse encontrado
ou a estrutura switch fosse encerrada.
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
94 - 95III
A declaração default é opcional e corresponde a “nenhuma das alternati-
vas anteriores”.
O comando break (veja detalhes no item “COMANDOS DE DESVIO”) é
um dos comandos de desvio do PHP; ao encontrá-lo, o ponto de execução salta
para o próximo comando após o bloco do comando switch, delimitado pelo
fecha chaves.
A última sequência de instruções, a do bloco default, não precisa ser deli-
mitada pelo break porque o sinal de fecha chaves realiza esta tarefa, encerrando
a estrutura do comando switch.
ESTRUTURAS DE ITERAÇÃO (LAÇOS DE REPETIÇÃO)
As estruturas de iteração ou laços de repetição permitem que determinado con-
junto de instruções seja executado até que determinada condição seja satisfeita.
Essa condição pode ser um número de repetições pré-definido, como no laço
for, ou uma condição genérica, como nos laços while e do-while.
FOR
O comando da linguagem que implementa esta estrutura é o for, do inglês,
para. É uma estrutura de repetição que tem o número de ocorrências definido
previamente.
Sua forma geral é:
©shutterstock
Estruturas de Iteração (Laços De Repetição)
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
94 - 95
for (inicialização; condição; incremento) sequência-co-
mandos;
A inicialização é feita por um comando de atribuição usado para colocar um
valor na variável de controle do laço.
A condição é uma expressão relacional que determina quando o laço acaba.
Muito CUIDADO deve ser tomado no estabelecimento dessa condição, pois não
se aceita o operador relacional ‘==’, somente os seguintes: ‘<’, ‘>’, ‘<=’ e ‘>=’, por-
que a relação é estabelecida pela palavra-chave ‘enquanto’, por exemplo: repita
enquanto $i < 19.
O incremento define como a variável de controle do laço varia cada vez que
o laço é repetido. Na verdade, esse incremento pode ser um decremento caso o
valor da inicialização seja maior que o critério de parada. Além disso, pode ser
inteiro ou real.
Estas três seções principais devem ser separadas por pontos e vírgulas. Uma
vez que a condição se torna falsa, a execução do programa continua no comando
seguinte ao for.
Nos próximos exemplos desta unidade, os três pontinhos entre chaves {...}
significam uma sequência de comandos qualquer a ser executada.
Exemplos:
/* repete enquanto menor
que 10, portanto, de 0 a
9 */
for ($i = 0; $i < 10; $i++)
{...}
/* repete enquanto menor
que 10, portanto, de 0 a
9.5 */
for ($i = 0; $i < 10;
$i+=0.5){...}
/* repete enquanto maior
que 0, portanto, de 10 a 1
for ($x = 10; $x > 0; $x--)
{...}*/
O formato geral do laço for da lin-
guagemPHP permite uma flexibilidade
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
96 - 97III
admirável. Para aclarar esta afirmação, algumas variações dessa estrutura são
apresentadas a seguir:
É permitido que duas variáveis controlem o laço, para tanto, se usa o ope-
rador vírgula que denota a necessidade de duas ações.
for ($x = 0, $y = 0; $x+$y < 10; ++$x){...}
Supondo que a variável de controle já tenha sido definida e inicializada,
pode-se criar um laço for sem a parte de inicialização das variáveis de controle.
for ( ; $x < 9; $x++){...}
É possível, também, criar um laço infinito que executará o bloco de coman-
dos indefinidamente até que um comando break seja encontrado no bloco. Para
se conseguir esse efeito, é preciso usar a sintaxe abaixo, sem definir nenhuma
variável ou controle.
for ( ; ; ){...}
Conclusão: qualquer um dos parâmetros de for pode ser suprimido sem
acarretar erros de sintaxe.
Exemplo 1: Escreve a tabuada do 7.
$tab = 7;
for ($i = 1 ; $i <= 10 ; $i++)
echo($tab.”*”.$i.”=”.$i*$tab.”<br>”);
Exemplo 2: Escreve as tabuadas dos números 2 a 10.
$min = 2;
$max = 10;
for ($tab = $min; $tab <= $max; $tab++){
for ($i = 1; $i <= 10; $i++){
echo($tab.”*”.$i.”=”.$i*$tab.”<br>”);
}
}
Exercício: Repita este exemplo em um programa PHP, mas apresente as
tabuadas resultantes em forma de tabela HTML.
While
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
96 - 97
WHILE
Esta estrutura tem uma função de repetição que pode repetir um bloco de ins-
truções sem que saibamos o número de vezes previamente.
Seguindo aquela linha humana de exemplos, é como tomar água: tome um
gole, e se ainda tiver sede, tome outro, senão pare.
Você não sabe quantos goles serão necessários para matar sua sede, mas sabe
que a hora em que estiver satisfeito(a) parará de beber.
Forma geral:
while(condição) comando;
Para o qual, a palavra comando pode ser um comando vazio, um comando
simples ou um bloco de comandos.
A palavra condição pode ser uma variável ou uma expressão cujo resul-
tado será avaliado.
O laço (bloco de comandos) se repete enquanto a condição é verdadeira.
Quando for falsa, o controle do programa passará para a linha após o código
do laço.
O exemplo abaixo calcula a temperatura em graus centígrados com base nos
graus fahrenheit dos números compreendidos entre 0 a 300.
$menor=0;
$maior=300;
$fahr = $menor;
while ($fahr <= $maior){
$celsius = 5 * ($fahr-32) / 9;
if($fahr == 0) $fahr = ‘000’;
if(($fahr >= 10) && ($fahr <= 90)) $fahr = ‘0’.$fahr;
echo($fahr.” || “.$celsius.”<br>”);
$fahr = $fahr + 10;
}
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
98 - 99III
DO - WHILE
Ao contrário do laço for e while, o laço do-while testa a condição de parada no
final do laço. Isso significa que o conjunto de comandos é executado obrigato-
riamente uma vez ao menos.
Se você tem algumas notas de dinheiro na sua carteira e vai pagar uma conta,
naturalmente, pelo menos uma nota será utilizada. Dê uma nota, se o valor não
for atingido, dê outra nota, repita isto até que o valor total seja atingido.
Forma geral:
do{
comandos;
} while(condição);
O laço do-while repete ‘comandos’ até que a ‘condição’ se torne falsa.
Exemplo:
$menor=0;
$maior=300;
$fahr = $menor;
do{
$celsius = 5 * ($fahr-32) / 9;
if($fahr == 0) $fahr = ‘000’;
if(($fahr >= 10) && ($fahr <= 90)) $fahr = ‘0’.$fahr;
echo($fahr.” || “.$celsius.”<br>”);
$fahr = $fahr + 10;
}while ($fahr <= $maior);
Foreach
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
98 - 99
FOREACH
Este é um tipo de repetição muito peculiar no PHP. Nem todas as linguagens
implementam esta estrutura de repetição.
O construtor foreach é utilizado para executar laços de repetição sobre arran-
jos, portanto ocorrerá um erro se for utilizado sobre variáveis de qualquer tipo
diferente do tipo array ou mesmo em variáveis deste tipo, mas não inicializadas.
Esta estrutura cria um contador interno que é inicializado em zero, quando
o foreach inicia a primeira iteração, significa que ele aponta para o primeiro ele-
mento do array que está sendo operado.
Exemplo:
$vetor = array(3, 5, 9, 11);
foreach($vetor as $valor){
echo(“Valor atual de \$vetor é $valor<br>”);
}
Resultado:
Valor atual de $vetor é 3
Valor atual de $vetor é 5
Valor atual de $vetor é 9
Valor atual de $vetor é 11
Este exemplo pode ser interpretado assim: “para cada” (foreach) posição do
arranjo denominado $vetor, leia o respectivo valor e o atribua à variável $valor,
e, após isto, imprima valor atribuído.
Os índices do arranjo também podem ser consultados e mostrados para
promover uma ilustração.
Exemplo:
$vetor = array(3, 5, 9, 11);
foreach($vetor as $i => $valor){
echo(“Valor atual de \$vetor[$i] é $valor<br>”);
}
Resultado:
Valor atual de $vetor[0] é 3
Valor atual de $vetor[1] é 5
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
100 - 101III
Valor atual de $vetor[2] é 9
Valor atual de $vetor[3] é 11
Na realidade, ao executar o foreach, o servidor PHP cria um novo arranjo,
espelho do original, composto por referências (semelhantes aos ponteiros), a par-
tir do qual é possível ler todos os dados do original sem acessá-lo diretamente.
Porém, se for necessário alterar os dados contidos em cada posição do array,
é possível, porém é necessário utilizar as referências criadas para cada item dele.
Lembre-se que o modificador &, precedendo o nome de uma variável, indica
que estamos acessando o endereço ou referência dela.
Exemplo:
$vetor = array(3, 5, 9, 11);
// mostra o arranjo original
foreach($vetor as $i => $valor){
echo(“Valor atual de \$vetor[$i]: $valor<br>”);
}
// modifica o arranjo
foreach($vetor as &$valor){
$valor = $valor * 2;
}
// mostra o arranjo com novos valores
foreach($vetor as $i => $valor){
echo(“Valor atual de \$vetor[$i]: $valor<br>”);
}
unset($value); // desfaz a referência com o último elemento
Neste exemplo, todos os elementos do vetor serão multiplicados por 2, e o
script apresenta o seguinte resultado:
Valor atual de $vetor[0]: 3
Valor atual de $vetor[1]: 5
Valor atual de $vetor[2]: 9
Valor atual de $vetor[3]: 11
Valor atual de $vetor[0]: 6
Valor atual de $vetor[1]: 10
Valor atual de $vetor[2]: 18
Comandos de Desvio
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
100 - 101
Valor atual de $vetor[3]: 22
A mesma técnica é utilizada para matrizes (arranjos bidimensionais), como
mostra o exemplo a seguir:
$matriz = array();
$matriz[0][0] = “0x0”;
$matriz[0][1] = “0x1”;
$matriz[1][0] = “1x0”;
$matriz[1][1] = “1x1”;
foreach($matriz as $linha=>$v1){
foreach($v1 as $coluna=>$v2){
echo(“[$linha][$coluna] = $v2<br>”);
}
}
Resultado:
[0][0] = 0x0
[0][1] = 0x1
[1][0] = 1x0
[1][1] = 1x1
COMANDOS DE DESVIO
BREAK
O comando break tem dois usos: terminar um comando switch ou forçar a
terminação imediata de um laço de repetição, ignorando o teste condicional
normal do laço.
O exemplo abaixo ilustra o funcionamento do switch sem o break. Se cons-
tante1 for selecionada, somente a sequência1 de comandos será executada. Porém,
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
102 - 103III
se constante2 for selecionada, todas as próximas sequências (2, 3 e default) serão
executadas. Se constante3 for selecionada, a sequência3 e a referente ao bloco
default serão executadas.
switch(expressão){
case constante1:
sequência1_de_comandos;
break;
case constante2:
sequência2_de_comandos;
case constante3:sequência3_de_comandos;
...
default:
sequência_de_comandos;
}
Um exemplo com o comando break aplicado dentro de um laço de repeti-
ção é visto a seguir:
for($t = 1; $t < 100; $t++){
echo($t.” “);
if ($t == 10) break;
}
Este script escreve os números de 1 até 10 na tela do navegador. O laço ter-
mina porque o break provoca uma saída imediata do laço, desrespeitando o
teste condicional t < 100.
Resultado:
1 2 3 4 5 6 7 8 9 10
Comandos de Desvio
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
102 - 103
CONTINUE
O comando continue trabalha de forma parecida com o break. A diferença é que
enquanto o comando break provoca o término do laço, o comando continue
força o fluxo do programa a passar para a próxima iteração, pulando qualquer
código que houver entre ele e o final do bloco de código do laço.
// inicializa o vetor
for ($i=0; $i<10; $i++)
$vet[$i] = $i;
// calcula os valores evitando a divisão por zero
for ($i=0; $i<10; $i++){
if ($vet[$i] == 0){
echo(“ O ‘continue’ evita a divisão por zero<br>”);
continue;
echo(“não passa por aqui<br>”);
}
$vet[$i]=1/$vet[$i];
echo(“1/”.$i.” = “.$vet[$i].”<br>”);
}
Repare que o comando else não foi necessário, porque o continue se encar-
rega de saltar as próximas linhas de comando sem que elas sejam executadas.
Resultado:
O ‘continue’ evita a divisão por zero
1/1 = 1
1/2 = 0.5
1/3 = 0.333333333333
1/4 = 0.25
1/5 = 0.2
1/6 = 0.166666666667
1/7 = 0.142857142857
1/8 = 0.125
1/9 = 0.111111111111
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
104 - 105III
RETURN
O construtor return normalmente é utilizado para encerrar uma função, retor-
nando ou não um valor ao chamador. Um chamador pode ser o programa
principal ou outra função. Aprenda sobre isto no item “Funções definidas pelo
usuário”.
Se return tem um valor associado a ele, esse valor é o valor de retorno da
função, caso contrário, o valor de retorno é vazio.
Forma geral:
return expressão;
return constante;
return;
Opcionalmente:
return(expressão);
return(constante);
return();
As palavras expressão e constante, portanto, são opcionais, visto que nem
sempre uma função necessita retornar um valor ao final da sua execução.
Os parênteses podem ser utilizados, mas não são necessários, visto que return
não é uma função, mas um construtor da linguagem. Nós preferimos utilizar
por estética e profissionalismo.
Se uma constante estiver presente na sentença, tornar-se-á o valor de retorno
da função, e no caso de uma expressão, o valor de retorno é o resultado dela.
É possível utilizar quantos comandos return forem desejados dentro de
uma função, contudo, a função será interrompida tão logo encontre o primeiro.
Exemplo:
function teste(){
$var = 34;
if($var > 3)
return(1);
else
return(9);
}
$valor = teste();
echo($valor);
Se o construtor return() for utilizado no escopo global, o script será encer-
rado, pois estaria retornando para o chamador que é o próprio navegador.
Exit/DIE
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
104 - 105
EXIT/DIE
O construtor exit interrompe o processamento do script; ele possui um cons-
trutor equivalente ou sinônimo: die.
Forma geral:
exit
exit()
exit(string)
exit(inteiro)
Para encerrar o programa normalmente, utilize:
exit;
exit();
exit(0);
exit(“O programa foi encerrado normalmente!”);
Para encerrar o programa retornando um código de erro, utilize um valor
inteiro entre 1 e 254, pois o 0 (zero) simboliza encerramento normal e o 255 está
reservado pelo PHP. Os códigos de erro não são mostrados na tela do navega-
dor, servem apenas para controle do sistema ou navegador.
exit(1);
exit(0376); // octal
exit(0x2A); // hexadecimal
106 - 107
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
106 - 107III
CONSIDERAÇÕES FINAIS
As linguagens de programação mais poderosas do mundo são construídas com
estruturas de decisão e estruturas de repetição, como as que foram estudadas
nesta unidade. A estrutura foreach modernizou e tornou automática a forma
de tratar arranjos.
A linguagem PHP herdou a sistemática da linguagem mais utilizada no
mundo, a linguagem C, e utiliza a sintaxe muito parecida também. Este fato
induz a pensarmos que além de aprender a programar com a linguagem de maior
produtividade para a Internet, estamos indiretamente aprendendo as mesmas
estruturas e sintaxe semelhantes de linguagens como C e Java.
106 - 107106 - 107
1. Cite as estruturas de decisão que também podem ser chamadas de seleção ou
comparação.
2. Cite as estruturas de repetição ou iteração.
3. Cite todos os desvios explícitos e explique em que momentos podem ser utiliza-
dos e quando são obrigatórios.
4. Escreva um script que crie um array de números aleatórios.
5. Escreva um “switch-case” que selecione a faixa de valores 0 a 3 e de 17 a 20.
6. Escreva um script que receba um número qualquer e determine se ele é par ou
ímpar.
7. Escreva um script que gera uma senha automaticamente
8. Escreva um script que construa uma tabela dos valores em graus Fahrenheit e
Celsius entre -10 e +10.
Programação Segura Utilizando PHP
Carlos Sica
Editora: Ciência Moderna
Sinopse: A Internet é o ambiente mais propício para a
disseminação de sistemas de informação. Por isso, a cada dia
verifi camos uma acentuada evolução de seus benefícios. Os
sistemas computacionais baseados na Internet estão sendo
disponibilizados em todas as partes do mundo, e cabe ao
próprio desenvolvedor impor regras de utilização para evitar
acessos não autorizados e até mesmo o comprometimento
do funcionamento do servidor de operação. Por outro lado, as
notícias de que os famigerados hackers estão invadindo sites para realizar tarefas criminosas
ou para simplesmente se divertir crescem na mesma proporção da utilização da Internet.
É nesse ambiente adverso que se torna necessário o estudo de técnicas de “programação
segura”, visando eliminar esses problemas ou diminuir ao máximo o raio de atuação de um
ataque bem-sucedido. Este livro traz estudos detalhados sobre as técnicas de ataque e as
possíveis soluções adotadas para evitar a invasão de hackers em homepages e aplicativos
comerciais e científi cos desenvolvidos para a Internet.
ESTRUTURAS DE PROGRAMAÇÃO
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
108 - 109III
U
N
ID
A
D
E IV
Professor Me. Carlos Benedito Sica de Toledo
INTRODUÇÃO AO PHP
ORIENTADO A OBJETOS
Objetivos de Aprendizagem
■ Entender o que é a Linguagem Orientada a Objetos.
■ Estudar alguns conceitos pertinentes ao paradigma da orientação a
objetos.
■ Entender a relação do paradigma com a linguagem PHP.
■ Aprender a estruturação de um programa em objetos.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■ Conceitos pertinentes ao paradigma da orientação a objetos
■ Aplicação dos conceitos na linguagem PHP
■ O que é uma classe e onde ela é construída
■ O que é um objeto e onde ele se comporta
■ Como enviar dados parâmetros para um objeto
108 - 109
110 - 111
INTRODUÇÃO
A computação utiliza métodos de modelagem que nem sempre são similares
aos modelos humanos. A orientação a objetos (OO) busca conceitos que pro-
porcionem uma aproximação do mundo real com a modelagem, da análise até
a implementação computacional.
Conceitos como a separação de dados e processos, a ocultação de dados por
meio do encapsulamento, as facilidades de abstrair dados e a reutilização de sof-
tware são fortemente aplicados à orientação a objetos.
A utilização da linguagem PHP vem crescendo a cada dia no cenário mer-
cadológico e os desenvolvedores vêm criandosoftwares mais sofisticados, fato
que direciona a linguagem para uma evolução. Prova disso é o lançamento da
versão 5 com grandes suportes para a orientação a objetos.
CONCEITOS BÁSICOS DA OO
■ Objetos
Objeto é uma unidade da qual queremos representar informações no sistema.
Por exemplo, o ser humano é frequentemente representado por informações a
seu respeito, que são guardadas em uma ficha cadastral. Esses dados representam
um ser humano em particular que ainda tem outras características não presentes
nessa ficha. Por exemplo, as capacidades de andar, pensar, falar e outras.
Os objetos são constituídos pelos atributos que os representam e pelas ope-
rações que eles realizam.
Neste sentido, pode-se criar um paralelo com os seres humanos, exempli-
ficando a cor, altura, peso, entre outros, como atributos, e andar, falar, pensar
etc., como operações.
Um conjunto de atributos é conhecido por formar o estado de um deter-
minado objeto. As operações, que também são conhecidas por serviços ou
Introdução
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
110 - 111
©shutterstock
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
112 - 113IV
métodos, têm a função de mani-
pular o estado do objeto.
■ Ocultação de informa-
ções (encapsulamento)
A teoria da orientação a objetos
reza que o único meio de mani-
pular o estado de um objeto é por
meio das operações associadas a
ele. Daí, o conceito de ocultação
de informações, pois os atributos
não devem ser manipulados diretamente, mas somente pela inovação de fun-
ções específi cas para tal fi m. Essas sim são visíveis e, por este motivo, podem
ser chamadas de interfaces.
Um grande valor agregado a essa técnica é a visão da independência dos
dados, pois a implementação dos métodos pode ser alterada sem comprometer
o uso do objeto ou mesmo modifi car a forma de utilização.
As funções também podem ser ocultadas com a aplicação da técnica de
“encapsulamento”, explicada mais adiante.
■ Classes
Uma classe é o agrupamento de objetos com características comuns, por exemplo,
o indivíduo pertence à classe de seres humanos. Nesse exemplo, cada ‘homem’ é
um objeto da classe ‘humano’. Entenda-se por características o agrupamento de
atributos e operações, pois todos têm cor, altura e peso e, além disso, os huma-
nos podem andar, falar e pensar.
■ Herança
Herança é um mecanismo que permite que as características comuns de um
grupo de objetos diferentes sejam concentradas em uma única classe. Essas clas-
ses, com nível hierárquico superior, podem ser intituladas como classe-base,
classe-mãe, classe-pai, superclasse ou ainda outra atribuição que se refi ra à sua
Imagine duas pessoas sendo assaltadas. Nunca elas vão ter o mesmo com-
portamento diante de tal situação inusitada. Somos então, objetos iguais,
mas reagimos de forma diferente quando submetidos a situações iguais,
portanto, somos polimorfos.
Conceitos Básicos da OO
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
112 - 113
superioridade. Já as classes herdeiras assim podem ser chamadas, mas também
classe-filha, subclasse ou classe derivada.
As classes derivadas herdam características das suas superiores devido ao
relacionamento hierárquico, mas também criam as suas próprias peculiaridades,
por isto são chamadas de especialização de uma superclasse. A classe superior
representa a generalização das classes herdeiras.
Um exemplo é a superclasse ‘animal’, que agrupa características comuns das
classes derivadas ‘racional’ e ‘irracional’.
■ Polimorfismo
Polimorfismo é a capacidade pela qual duas ou mais classes derivadas da mesma
classe-mãe podem reescrever as operações criadas na superclasse e, portanto,
herdadas por elas. Nesse conceito, por serem reescritas, terão comportamentos
distintos, específicos de cada objeto da classe herdeira.
Se os seres humanos fossem analisados como objetos, seria fácil imaginar
que, em um contorno geral, somos todos iguais, mas como nos conhecemos
bem, sabemos que nem todos os da nossa espécie são iguais. Isto porque somos
da mesma classe, a classe animais racionais, porém cada um tem seu compor-
tamento distinto.
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
114 - 115IV
IMPLEMENTAÇÃO DA TEORIA OO COM A LINGUAGEM
PHP
Pela possibilidade de criar e manipular novos tipos de dados baseados na teoria
da orientação a objetos, a linguagem PHP, principalmente na versão 5, pode ser
considerada orientada a objetos.
■ Classes
Uma classe é um novo tipo de dado composto por um conjunto de variáveis e
de funções relacionadas a essas variáveis. Para utilizar esse recurso, deve-se uti-
lizar o criador de tipos class, que permite colocar código e dados em nível de
igualdade. Dessa forma, o novo tipo de dado criado terá variáveis chamadas de
“atributos da classe” e funções, chamadas de “métodos da classe”.
O exemplo abaixo se refere à sintaxe de versão antiga, mas é bom docu-
mentar aqui para que você, aluno(a), não confunda com textos encontrados,
por exemplo, na Internet.
class NovaClasse{
var $var = “minha primeira classe<br>”;
function MostraVar(){
echo($this->var);
}
}
Exemplo na sintaxe atual
class NovaClasse{
private $var = “minha primeira classe<br>”;
public function MostraVar(){
echo($this->var);
}
}
■ Objetos
Um objeto é uma instância de uma classe, em outras palavras, as variáveis vivas
do tipo de uma classe são chamadas de objetos daquela classe e devem ser criadas
O ponteiro $this, é utilizado para um objeto apontar para ele mesmo, e será
explicado mais adiante, nesta mesma unidade.
Duas instâncias são iguais somente se elas têm os mesmos valores em todos
os atributos.
Implementação da Teoria OO com a Linguagem PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
114 - 115
pelo operador new que aloca memória para o objeto e devolve o endereço reser-
vado para ele.
$obj = new NovaClasse;
echo($obj->var); // funciona para o PHP 4 ou, se decla-
rar public, no PHP 5
$obj->MostraVar(); // funciona para os dois porque a fun-
ção é pública
Uma estrutura que dá força ao PHP orientado a objetos é a que permite
comparar dois objetos diretamente. Dois objetos da mesma classe podem ser
comparados como as variáveis comuns.
if($obj1 == $obj2){
//...
}
Veja como estudar a parte interna de um objeto no item “Iteração sobre obje-
tos com a estrutura ‘para cada’”.
■ ponteiro $this
Sempre que um novo objeto é instanciado pelo operador new, o que se obtém
é uma referência daquele objeto. Se os seus atributos e métodos forem acessa-
dos pelo próprio objeto, deve-se utilizar a variável $this, que é uma referência
ao mesmo objeto em ação.
Os métodos podem receber qualquer um dos três níveis de encapsulamen-
to, porém aqueles que forem declarados sem a definição de visibilidade se-
rão considerados public.
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
116 - 117IV
■ Encapsulamento (PHP 5)
A programação orientada a objetos prevê a restrição de acesso a métodos e atri-
butos, atendendo à teoria da ocultação de informação. O objetivo é proteger os
dados permitindo seu acesso somente através de funções. Esta organização de
acesso pode ser chamada de visibilidade ao invés de encapsulamento.
O PHP 5, seguindo as normas da orientação a objetos, oferece três níveis de
proteção para implementar essa regra:
public: todos têm acesso aos dados e funções ali definidos;
protected: os objetos daquela classe e das classes herdeiras têm acessoaos
dados e funções ali definidos;
private: somente os objetos daquela classe têm acesso aos dados e funções
ali definidos.
De forma idêntica, as funções e atributos-membros de uma classe devem
ser precedidos pela definição de visibilidade (public, protected ou private) e só
podem ser invocados de acordo com a regra estabelecida pelo encapsulamento
descrita nos exemplos abaixo.
Exemplo:
class classe_exemplo {
public $var1 = 1;
private $var2 = 2;
public function imprime(){
echo($this->var2);
}
}
//...
$variavel_objeto = new classe_exemplo();
Implementação da Teoria OO com a Linguagem PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
116 - 117
Uma vez criado um objeto, é possível acessar os atributos (variáveis internas
às classes) e os métodos (funções-membros), ambos definidos na classe. Para
tanto, deve-se utilizar o operador composto pelos sinais de ‘menor’ e de ‘maior’
formando uma flecha ‘->’.
A variável pública $var1, por ser pública, pode ser acessada por qualquer
nível do programa:
$variavel_objeto->var1 = 36; // altera o valor de $var1
echo($variavel_objeto->var1); // imprime o valor 36
A variável privada $var2 tem seu acesso proibido, a não ser pelos métodos
implementados na própria classe:
echo($variavel_objeto->var2); // ocorre um erro aqui por-
que $var2 é privada
Portanto, a única forma de acessá-la é invocando a função imprime():
$variavel_objeto->imprime(); // imprime o valor 2
Neste contexto, seria necessário criar uma função específica para alterar
seu valor:
function muda_valor($valor){
$this->var2 = $valor;
}
Resultado:
$variavel_objeto->muda_valor(3); // muda o valor de 2 para 3
$variavel_objeto->imprime(); // imprime o valor 3
■ Herança
Uma classe pode herdar os atributos e métodos de outra classe de nível supe-
rior usando a palavra-chave extends na declaração.
Exemplo (em continuação ao exemplo do item anterior)
class classe_filha extends classe_exemplo{
private $outra_var;
public function outra_funcao(lista de parâmetros){
//...
}
}
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
118 - 119IV
//...
$obj = new classe_filha;
//...
$obj->imprime();
O método imprime foi herdado da classe_exemplo, portanto, vai impri-
mir o valor 2.
■ Funções construtoras
Toda classe pode ter uma função que é executada automaticamente no momento
de sua instanciação (lembre-se: é sinônimo de criação de um objeto). Esta classe
é chamada de função construtora ou método construtor.
Por ser chamado automaticamente sempre que um novo objeto é criado, esse
método é adequado para efetuar as inicializações das quais o objeto possa vir a
precisar logo na sua criação, portanto, antes mesmo de ser usado.
Nenhum grau de encapsulamento (public, protected ou private) deve ser
declarado para esta função.
Nas versões do PHP 4, a função construtora deve receber o mesmo nome
da classe, já no PHP 5, este método deve receber o nome exclusivo construct,
precedido por dois underlines. Porém, o PHP 5 também está preparado para
reconhecer uma função que tenha o mesmo nome da classe como a construtora,
caso não haja uma nomeada como ‘__construct’.
Exemplo para a versão 4:
class ClasseTeste{
function ClasseTeste(){
echo(“um objeto foi criado”);
}
}
//...
$obj_teste = new ClasseTeste; // imprime “um objeto foi
criado”;
Exemplos para a versão 5:
class teste1{
public function __construct(){
Implementação da Teoria OO com a Linguagem PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
118 - 119
echo(“um objeto foi criado”);
}
}
...
$obj_teste1 = new teste1; // imprime “um objeto foi criado”;
Uma construtora pode opcionalmente receber parâmetros como as outras
funções, característica que enriquece a classe.
class teste2{
public function __construct($objeto){
echo(“O objeto “.$objeto.” foi criado”);
}
}
...
$obj_teste2 = new teste2(“cidade”); // imprime “O objeto
cidade foi criado”
As funções construtoras de classes superiores (classe-mãe ou classe-pai)
podem ser invocadas pelas filhas, porém não serão chamadas automaticamente
se a classe filha definir seu próprio método construtor.
Para invocar a função construtora da classe-mãe, deve ser feita uma chamada
explícita para ela, aplicando o especificador parent::__construct(), a partir do
construtor da classe-filha. Essa chamada pode ocorrer em qualquer momento da
execução da construtora da filha, ou seja, pode-se escrever a linha que a invoca
em qualquer trecho, contanto que seja dentro da função construtora da filha.
Exemplo para a versão 4:
class ClasseMae{
function ClasseMae($objeto){
$this->var = $objeto;
echo(“Criando o objeto da classe mãe:“.$this->var.”<br>”);
}
}
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
120 - 121IV
class ClasseFilha extends ClasseMae{
function ClasseFilha($objeto){
parent::ClasseMae(“Mãe”); // chamará a constru-
tora da classe mãe
$this->var = $objeto;
echo(“Criando o objeto da classe filha: “.$this->var.”<br>”);
}
}
$obj = new ClasseFilha(“Filha”); // imprime “Criando o
objeto da classe mãe: Mãe
// “Criando o
objeto da classe filha: Filha.”
Exemplo para a versão 5:
class ClasseMae{
public function __construct(){
echo(“Criando o objeto da classe mãe.<br>”);
}
}
class ClasseFilha extends ClasseMae{
public function __construct(){
parent::__construct(); // chamará a constru-
tora da classe mãe
echo(“Criando o objeto da classe filha.”);
}
}
$obj1 = new ClasseMae(); // imprime “Criando o
objeto da classe mãe.”
$obj2 = new ClasseFilha(); // imprime “Criando o
objeto da classe mãe.”
// “Criando o
objeto da classe filha.”
Implementação da Teoria OO com a Linguagem PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
120 - 121
■ Funções destrutoras (PHP 5)
O método destrutor ou função destrutora, que é uma inovação da versão 5 do
PHP, funciona de forma similar a de outras linguagens orientadas a objeto, como
o C++ e Java.
O método destrutor será chamado automaticamente assim que todas as refe-
rências para um objeto em particular forem removidas ou quando o objeto for
explicitamente destruído pela função unset();
Esse método deve receber o nome exclusivo destruct, precedido por dois
underlines.
Exemplo:
class NovaClasse{
public function __construct($objeto){
$this->var = $objeto;
echo(“Criando o objeto “.$this->var.”<br>”);
}
public function __destruct(){
echo(“Destruindo o objeto: “.$this->var.”<br>”);
}
}
$obj = new NovaClasse(“Estado”); // imprime “Criando o
objeto Estado”
...
unset($obj); // imprime “Destruindo o
objeto: Estado”
Como no caso dos construtores, os destrutores das classes-mães não são
chamados automaticamente no momento da desalocação do objeto. Para invo-
car a função destrutora da classe-mãe, é necessário fazer uma chamada explícita
com a seguinte sintaxe:
parent::__destruct();
■ Acesso estático aos membros das classes
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
122 - 123IV
PHP permite que uma classe seja invocada estaticamente, ou seja, sem que um
objeto tenha sido criado. Isto só é possível com a utilização do operador de
escopo :: que libera o acesso às constantes, aos atributos e aos métodos de uma
classe semque ela tenha sido instanciada.
Exemplo:
class NovaClasse {
const PI = 3.1415;
}
echo(NovaClasse::PI);
No exemplo anterior foi mostrada uma constante, mas no caso específico de atri-
butos (variáveis) e métodos (funções), é necessário que eles sejam declarados
como estáticos para que sejam acessíveis sem precisar instanciar a classe. Além
disso, um atributo declarado como estático não pode ser acessado por meio de
um objeto instanciado da classe, já os métodos estáticos podem.
Exemplo:
class NovaClasse{
public static $valor = 45.555;
public function MostraValor(){
return self::$valor;
}
}
echo(“1: “ . NovaClasse::$valor . “<br>”);
echo(“2: “ . NovaClasse::MostraValor() . “<br>”);
$obj = new NovaClasse();
echo(“3: “ . $obj->MostraValor() . “<br>”);
Tanto o atributo estático $valor, quanto o método público MostraValor(),
podem ser acessados estaticamente sem que o objeto seja criado, mas o atributo
estático não pode ser acessado pelo objeto criado, portanto a sentença
echo(“4: “ . $obj->$valor . “<br>”);
não é aceita neste caso.
Se o exemplo for modificado para que o método também seja estático, o
resultado será idêntico, pois os métodos estáticos podem ser invocados tanto
estaticamente como dinamicamente (por objetos).
Implementação da Teoria OO com a Linguagem PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
122 - 123
class NovaClasse{
public static $valor = 45.555;
public static function MostraValor(){
return self::$valor;
}
}
■ Argumento padrão
Argumento ou parâmetro padrão é um valor atribuído automaticamete ao(s)
argumento(s) de uma função, quando nenhum valor for atribuído na chamada
da função. Portanto, é possível predefinir valores para os argumentos das funções.
Esses valores serão assumidos no caso da função ser chamada sem que sejam
especificados argumentos. Dessa forma, quando algum parâmetro é declarado
assim, a passagem do mesmo na chamada da função torna-se opcional.
function teste($valor = “pré-definido”){
echo $valor;
}
teste(); // imprime “pré-definido”
teste(“outro valor”); // imprime “outro valor”
Qualquer função pode ser escrita com argumentos padrão, inclusive as fun-
ções contrutora e a destrutura já estudadas anteriormente.
Exemplo:
class NovaClasse{
public function __construct($objeto=”Cidade”){
$this->var = $objeto;
echo(“Criando o objeto “.$this->var.”<br>”);
}
public function __destruct(){
echo(“Destruindo o objeto: “.$this->var.”<br>”);
}
}
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
124 - 125IV
// utilizando o valor padrão
$obj = new NovaClasse(); // imprime “Criando o objeto Cidade”
...
unset($obj); // imprime “Destruindo o
objeto: Cidade”
// alterando o valor padrão
$obj = new NovaClasse(“Estado”); // imprime “Criando o
objeto Estado”
...
unset($obj); // imprime “Destruindo o
objeto: Estado”
Quando a função tem mais de um parâmetro, o que tem valor padrão deve
ser declarado por último, como no exemplo abaixo.
function teste2($cor, $figura = circulo){
echo “a figura é um $figura de cor $cor”;
}
teste2(azul);
// imprime “a figura é um círculo de cor azul”
teste2(marrom,quadrado);
// imprime “a figura é um quadrado de cor marrom”
■ Classes e métodos abstratos (PHP 5)
As classes abstratas servem apenas de base ou modelo para construção de outras
hierarquicamente inferiores (herdeiras) e não podem ser instanciadas.
O objetivo básico de se criar uma classe abstrata é reescrevê-la nas classes
herdeiras.
Os métodos abstratos só podem ser declarados em classes abstratas e servem,
da mesma forma que a sua classe, para serem reescritos pelas classes filhas, por
isto não podem ter uma implementação. Mesmo porque, como já foi explicado
antes, uma classe com esta característica não pode ser instanciada como as clas-
ses concretas, portanto os métodos abstratos nunca serão invocados.
Qualquer classe que contenha pelo menos um método abstrato será obri-
gatoriamente abstrata.
Trabalhar com classes abstratas é condição necessária para implementar o
polimorfismo.
Implementação da Teoria OO com a Linguagem PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
124 - 125
■ Polimorfismo (PHP 5)
Por princípio, objetos polimorfos são objetos semelhantes que atuam de forma
diferente. Lembra-se deste conceito, quando utilizei o “ser humano” para exem-
plificar uma classe?
Para implementar tal princípio, é necessário usar uma referência a um objeto
do tipo da superclasse (ponteiro ou endereço) e, a partir daí, o sistema pode deci-
dir sobre qual método deve ser selecionado na execução do objeto, de acordo
com o tipo da classe derivada, durante a execução. Em outras palavras, o com-
portamento assumido por um método só será definido durante a sua execução.
Conceito já consolidado na orientação a objetos, uma classe abstrata não
pode ser instanciada, pois é utilizada apenas para criar um padrão a ser seguido
pelas herdeiras e, estas sim, poderão ser instanciadas.
Como exemplificado na figura a seguir, as classes ‘circulo’ e ‘quadrado’ her-
dam características da superclasse ‘figura’, que tem a função ‘desenha’. Esta função
será reescrita em cada uma das subclasses.
A classe-mãe ‘figura’ deve ter a função abstrata que, na verdade, não desenhará
a figura, mas as herdeiras, reescrevendo essa função de acordo com suas carac-
terísticas, o farão. Cada objeto das classes-filhas responderá a uma função com
o mesmo nome, porém, de forma diferente, de acordo com sua implementação.
Os nomes das classes são precedidos por um T maiúsculo apenas para lem-
brar que é um tipo de dado criado pelo programador.
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
126 - 127IV
Figura 1: Hierarquia de classes polimorfas
Fonte: elaborada pelo autor
Os métodos das classes-filhas, que reescrevem o método abstrato da classe supe-
rior, devem ter o mesmo grau de encapsulamento ou inferior. Entende-se o nível
public como o mais fraco ou inferior.
Sempre que um novo objeto for criado terá o tipo ‘figura’, mas fará referência
a um dos objetos gerados a partir da subclasse ‘circulo’, ‘triangulo’ ou ‘quadrado’.
Para criar uma lista polimorfa, deve-se imaginar a criação de um novo objeto
‘circulo’ e atribuir sua referência à posição de um array do tipo ‘figura’, sequen-
cialmente, executar esta ação com o objeto quadrado e atribuir sua referência à
próxima posição do array (figura a seguir). Ao invocar a função desenha com
o comando array[i]->desenha(), não se sabe qual objeto está sendo realmente
ativado, então o sistema decide durante a execução a função de qual objeto será
chamada.
Implementação da Teoria OO com a Linguagem PHP
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
126 - 127
Figura 2: Lista polimorfa (elementos tipo Tfigura)
Fonte: elaborada pelo autor
Exemplo:
abstract class Tfigura{
abstract protected function desenha();
}
class Tcirculo extends Tfigura{
protected function desenha(){
echo(“Bola”);
}
}
class Tquadrado extends Tfigura{
protected function desenha(){
echo(“Quadro”);
}
}
$obj = new Tcirculo;
$obj->desenha();
$obj = new Tquadrado;
$obj->desenha();
Este exemplo não garante ainda o polimorfismo, pois os objetos ‘obj’ são de tipos
diferentes e o polimorfismo exige objetos iguais atuando de forma diferente. Neste
caso, o que está ocorrendo são atribuições com tipagem automática.
A implementação do polimorfismo, baseada em sua definição, é totalmente
viávelem linguagens fortemente tipadas, como o C++, Java entre outras, mas
encontra uma limitação no PHP que tem a tipagem automática. Para esclarecer
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
128 - 129IV
este ponto será utilizado um exemplo na linguagem C++ que é tipada:
Tfigura *obj;
obj = new Tcirculo;
obj->desenha();
obj = new Tcirculo;
obj->desenha();
Repare que agora os objetos ‘obj’ são de um único tipo, portanto, não se sabe até
o momento da execução qual objeto será realmente ativado. Observe que seria
possível, inclusive, criar uma lista (estática ou dinâmica) do tipo Tfigura e inse-
rir nela objetos Tcirculo e Tquadrado, assim o polimorfismo estaria garantido e
seria construída uma lista polimorfa.
Como o PHP não permite a tipagem explícita, é necessário lançar mão de
outras ferramentas para implementar o polimorfismo. A partir do PHP 5, é possí-
vel utilizar a “indução de tipos” que permite regular os objetos pelo seu tipo. Isso
é implementado especificando o tipo do parâmetro de entrada de uma função.
Induzir um tipo é forçar que os parâmetros de uma função sejam objetos de
uma classe exclusiva, especificando seu nome no protótipo da função. Esta téc-
nica só pode ser utilizada com tipos objetos (criados por uma classe). A indução
de tipos tradicionais, tais como inteiro e string, não é suportada pela linguagem.
Exemplo:
function teste(Tfigura $objeto_figura){
...
insere na lista estática ou dinâmica
...
}
Esta implementação garante que esta função somente receberá objetos do tipo
Tfigura. Em caso de incompatibilidade de tipos, o interpretador PHP provocará
um erro fatal e interromperá o script. Com este método, é seguro afirmar que o
polimorfismo foi implementado e a lista criada é polimorfa.
Esta função (que induz o tipo) pode perfeitamente ser um método de uma
classe:
class Tlista{
// cria array (lista)
O Modificador “Final” (PHP 5)
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
128 - 129
private $array_polimorfo = array();
public function insere(Tfigura $objeto_figura){
// insere objeto no array
array_push($this->array_polimorfo, $objeto_figura);
}
}
Teste de inserção dos objetos na lista polimorfa:
$obj_lista = new Tlista; // cria uma
lista nova
$obj = new Tcirculo; // cria um
objeto ‘circulo’
$obj_lista->insere($obj); // insere ele
na lista
$obj = new Tquadrado; // cria um
objeto quadrado
$obj_lista->insere($obj); // insere ele
na lista
Teste de impressão dos objetos da lista polimorfa:
$obj_lista->array_polimorfo[0]->desenha(); // imprime Bola
$obj_lista->array_polimorfo[1]->desenha(); // imprime Quadro
O MODIFICADOR “FINAL” (PHP 5)
Esta palavra-chave do PHP 5 indica que a classe não poderá mais ser herdada, é o
fim da linhagem daquela hierarquia. Isto permite que uma classe filha sobrecar-
regue um método ou atributo da classe mãe, mantendo a prioridade de chamada
sobre a variável ou função da superior.
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
130 - 131IV
class ClasseMae {
public function Metodo() { }
}
class ClasseFilha extends ClasseMae {
public final function Metodo () { } // tem prioridade
sobre a função da classe mãe
}
$obj = new ClasseFilha;
$obj -> Metodo(); // chama a função prioritária (da classe
filha)
Uma tentativa de estender (herdar) a classe ClasseFilha resulta em um erro
fatal, visto que ela finaliza a hierarquia.
CRIAÇÃO E IMPLEMENTAÇÃO DE INTERFACES DE
OBJETOS
Uma interface é uma classe que serve de modelo, como uma classe abstrata, com
a diferença que uma interface utiliza somente métodos abstratos. Isto implica
em dizer que uma interface, apesar da palavra-chave, é uma classe que con-
tém somente a declaração ou os protótipos das funções, e a sua implementação
(corpo) será feita na classe que utiliza a interface. Além disso, todas as funções
declaradas em uma interface devem ser, obrigatoriamente, implementadas na
classe correspondente.
A implementação de uma interface exige o operador “implements”. Todos
os métodos declarados na interface devem ser implementados dentro da classe.
O fato de não implementar um deles já resulta em um erro fatal.
Exemplo:
interface MinhaInterface{
function mostra();
function ajusta($a);
As classes podem implementar mais de uma interface, que devem ser se-
paradas por vírgula, porém, duas classes não podem implementar a mesma
interface, pois causa ambiguidade.
Criação e Implementação de Interfaces de Objetos
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
130 - 131
}
class MinhaClasse implements MinhaInterface{
private $priv = “teste de variável privada”;
public function mostra(){
echo(“Esta função pública informa o valor da variável
privada: $priv”);
}
public function ajusta($a){
echo(“Esta função recebe um valor e copia para a vari-
ável privada.”);
$priv = $a;
}
}
O objetivo de criar uma interface, como o próprio nome diz, é criar um
meio de comunicação com o usuário, assim, todos os métodos ali declarados
devem ser públicos.
A utilização de interfaces de objetos permite a criação de um determinado
código que especifica quais métodos e variáveis de uma classe devem ser imple-
mentados, porém, sem ter que definir como esses métodos serão tratados, ato
que será realizado na própria classe.
As interfaces podem ter hierarquia, como nas classes uma interface pode
herdar ou estender as características da superior por meio do operador “extends”,
o mesmo utilizado nas classes.
A utilização da classe criada a partir da interface é transparente para o pro-
grama principal.
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
132 - 133IV
$obj = new MinhaClasse;
$obj->mostra();
echo “<br>”;
$obj->ajusta(“Novo valor da variável privada”);
echo “<br>”;
$obj->mostra();
ITERAÇÃO SOBRE OBJETOS COM A ESTRUTURA
FOREACH (PHP5)
Anteriormente foi mostrado como comparar dois objetos diretamente, mas além
de comparar, é possível interagir com a parte interna de um objeto, acessar seus
atributos e métodos públicos de forma automática.
Na versão 5 do PHP, existe uma maneira de conhecer o conteúdo de um
objeto, como se fosse um array. Todas as propriedades visíveis de um objeto
podem ser utilizadas para a iteração por meio da instrução foreach.
Exemplo: este exemplo mostra como acessar os atributos de um objeto uti-
lizando o ponteiro $this (já descrito e explicado anteriormente) e sem utilização
desta referência interna.
No primeiro caso, todas as variáveis são visíveis pela função itera, no segundo,
somente as variáveis públicas são visíveis.
class MinhaClasse{
public $var1 = “ex var publica 1”;
public $var2 = “ex var publica 2”;
public $var3 = “ex var publica 3”;
protected $prot = “ex var protegida”;
private $priv = “ex var privada”;
function itera (){
foreach($this as $vetor => $valor) {
Iteração sobre Objetos com a Estrutura FOREACH (PHP5)
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
132 - 133
echo(“$vetor => $valor<br>”);
}
}
}
$obj = new MinhaClasse();
echo(“Percorre o objeto e mostra somente as variáveis públi-
cas.<br>”);
foreach($obj as $vetor => $valor){
echo(“$vetor => $valor<br>”);
}
echo(“<br>”);
echo(“Percorre o objeto e mostra todas as variáveis públi-
cas, protegidas e privadas.<br>”);
$obj->itera();
Resultado:Percorre o objeto e mostra somente as variáveis públicas.
var1 => ex var publica 1
var2 => ex var publica 2
var3 => ex var publica 3
Percorre o objeto e mostra todas as variáveis públicas, protegidas e privadas.
var1 => ex var publica 1
var2 => ex var publica 2
var3 => ex var publica 3
prot => ex var protegida
priv => ex var privada
Este link aponta para Aplicativos em PHP, Orientação a Objetos, Teoria e
Exercícios: <http://pt.wikibooks.org/wiki/Aplicativos_em_PHP/Orienta%-
C3%A7%C3%A3o_a_Objetos/Teoria_e_exerc%C3%ADcios>.
INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
134 - 135IV
FUNÇÕES PARA CLASSES E OBJETOS
class_exists() Checa se uma classe foi definida, retorna 1 se a
classe existe.
get_called_class() Informa o nome da classe publicada “Late Static
Binding”.
get_class_methods() Obtém o nome dos métodos de uma classe.
get_class_vars() Obtém as propriedades padrão de uma classe.
get_class() Retorna o nome da classe de um objeto.
get_declared_classes() Retorna uma matriz com os nomes das classes
definidas.
get_declared_interfaces() Retorna um array com todas as interfaces declara-
das.
get_object_vars() Obtém as propriedades públicas de um dado obje-
to.
get_parent_class() Recupera o nome da classe pai para o objeto ou
classe.
interface_exists() Checa se a interface foi definida.
is_a() Verifica se o objeto é de uma classe ou de sua classe
pai.
is_subclass_of() Verifica se o objeto tem esta classe como uma de
suas classes pai.
method_exists() Checa se o método da classe existe.
property_exists() Checa se o objeto ou a classe tem uma propriedade.
Quadro 26: Funções matemáticas do PHP
Aulas sobre PHP Orientado a Objetos
Introdução a Orientação a Objeto com PHP de David CHC1.
<http://www.youtube.com/watch?v=E5Q-s5mstTs>.
Curso de PHP Orientado a Objetos - Aula 01 - Criando Classes de Hugo
Vasconcelos.
<http://www.youtube.com/watch?v=rAkJOH5Gz7U>.
Considerações Finais
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
134 - 135
CONSIDERAÇÕES FINAIS
A orientação a objetos é um paradigma que representa toda uma filosofia para
construção de sistemas. Esta técnica de desenvolvimento e programação é a que
mais nos aproxima do mundo real.
Nesta unidade, pudemos estudar juntos a maioria das estruturas em PHP
que dão vida ao paradigma da orientação a obejtos, criando exemplos que são a
base para o desenvolvimento de grandes sistemas.
Veremos na próxima unidade como construir programas mais complexos
utilizando as estruturas de programação orientada a objetos.
136 - 137
1. Desenvolva um programa completo utilizando polimorfismo. Ele deve ter uma
classe abstrata chamada Tfigura e pelo menos três classes concretas chamadas:
Tcirculo, Tquadrado e Ttriangulo.
2. Construa uma classe simples e o trecho do programa que a instancia e testa to-
dos os seus métodos e atributos. Esta classe deve ter um atributo de cada nível
de abstração: público, privado e protegido.
3. Desenvolva uma classe completa contendo pelo três funções: Construtura, Des-
trutora e de informação. Instancie-a e mostre o funcionamento e, ao final, remo-
va o objeto da memória para mostrar que a função Destrutora funciona.
4. Desenvolva uma Interface e a Classe que a implementa, crie o objeto e teste
todas as funcionalidades dos métodos.
PHP – Do Básico à Orientação a Objetos
Fabrício S. V. Xavier
Editora: Ciência Moderna
Sinopse: O PHP é uma das linguagens mais utilizadas no mundo
da internet. A melhor coisa em usar PHP está no fato dele ser
extremamente simples para um iniciante, oferecendo, porém,
muitos recursos para o programador profi ssional e sendo também
uma linguagem Open Source de uso geral muito utilizada,
especialmente para o desenvolvimento de aplicações Web. O
principal objetivo do PHP5 foi melhorar os mecanismos de POO para
solucionar as carências das versões anteriores. Um passo necessário
para conseguir que PHP seja uma linguagem apta para todo tipo de aplicações e meios,
inclusive os mais exigentes. Sendo assim, foi abordado neste livro: noções básicas de PHP,
orientação a objetos, algumas funcionalidades mais avançadas, noções de mysql, postgresql,
defi nições de algumas funções úteis no desenvolvimento em PHP, abstração de dados, MVC,
documentação de código e XML e segurança.
Fonte:<http://www.levilivros.com.br/livro/php-do-basico-a-orientacao-de-
objetos/9788573936841/XA0190.html?origem=buscape&utm_source=buscape&utm_
medium=buscape&utm_campaign=buscape>.
Material Complementar
136 - 137
MATERIAL COMPLEMENTAR
U
N
ID
A
D
E V
Professor Me. Carlos Benedito Sica de Toledo
APLICAÇÕES COM PHP
ORIENTADO A OBJETOS
Objetivos de Aprendizagem
■ Estudar um conjunto de classes.
■ Instanciar os objetos e testar as classes criadas.
■ Desenvolver pequenos programas orientados a objetos.
■ Criar conhecimento para desenvolver programas maiores.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■ Operações sobre arquivos de música tipo mp3
■ Buscando endereços a partir do CEP no site dos Correios
■ Uma classe para acessar o banco de dados MySQL
140 - 141
INTRODUÇÃO
Na orientação a objetos utilizamos a técnica que mais nos aproxima do mundo real.
Devemos pensar e projetar nosso sistema computacional observando os objetos
existentes ou criando novos objetos mentalmente para que eles se materializem.
Nesta unidade desenvolveremos algumas práticas para te levar ao conhe-
cimento deste tipo de programação, portanto vamos estudar um conjunto de
classes e os programas que criam os respectivos objetos.
Projetos orientados a objetos induzem os programadores, em especial, em
projetos grandes, a desenvolverem as classes em arquivos separados. Esta téc-
nica permite a vários programadores trabalharem com o mesmo projeto ao
mesmo tempo, pois cada um conhece a interface da classe que o outro está tra-
balhando, assim, cada classe pode ser alterada sem que o restante do programa
seja envolvido.
Vamos realizar agora uma série de estudos, nos quais as classes estão em
arquivos separados do programa principal que a utiliza.
OPERAÇÕES SOBRE ARQUIVOS DE MÚSICA TIPO MP3
Quando tratamos de arquivos musicais, os dados gravados em CD usam um
formato não comprimido, de alta resolução. Os padrões de sinal da música são
codificados por amostragem, 44.100 vezes por segundo, sendo que cada amostra
tem 16 bits (2 bytes) de comprimento, além disso, a sequência é preparada para
sistemas de som estéreo, portanto as amostras são separadas para os alto-falan-
tes da esquerda e da direita. Assim, um CD armazena uma quantidade enorme
de bits para cada segundo de música, mais claramente: 44.100 amostras/segundo
* 16 bits/amostra * 2 canais = 1.411.200 bits por segundo = 176 KiloBytes (KB)
por segundo. Isto tudo significa que uma música de apenas 3 minutos ocupa 32
MegaBytes (MB) de mídia.
Introdução
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
140 - 141
©shutterstock
Este link é um pequeno artigo sobre como funciona a compressão de
arquivos de CD para MP3: <http://eletronicos.hsw.uol.com.br/arquivos-
-mp31.htm>.
Este link explica rapidamente como os arquivos MP3 surgiram e como
funcionam: <http://pt.wikipedia.org/wiki/MP3>.
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
142 - 143V
O formato MP3 compacta estas informações tornando os arquivos musicais muito
menores que os gravados originalmente nos CDs. Naturalmente, o objetivo do
formato MP3 é comprimir uma música, mantendo a qualidade do CD original,
ou pelo menos, que a perda de qualidade não seja percebida pelos nossos ouvi-
dos. Um arquivo MP3 comprime uma música de 32 MB em média para 3 MB.Em um arquivo MP3 é possível gravar e operar muitas informações no for-
mato texto através de um computador, além disso, é possível criar ferramentas
que operam sobre a música digital, cortando ou extraindo um trecho da música,
para criar, por exemplo, um toque para celular.
Neste exemplo, vamos estudar tanto como operar os dados com informa-
ções da música como operar sobre a música em si.
Vamos começar pela parte mais fácil, utilizando a classe chamada “mp3” e,
depois, vamos estudar como ela foi feita.
Operações Sobre Arquivos de Música Tipo Mp3
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
142 - 143
A CLASSE MP3
Uma das vantagens da programação orientada a objetos é que podemos encap-
sular em um único lugar todas as funções (métodos) e invocar a partir de um
único objeto criado. Basta você conhecer os protótipos dos métodos para poder
utilizá-los.
A nossa classe (mp3) tem três métodos públicos funcionais, o primeiro deles
é o que lê o arquivo e retorna um array contendo todos os dados.
A função pública get_mp3 lê os dados do arquivo mp3 indicado. Para uti-
lizar esta funcionalidade, basta atribuir o método para uma variável tipo array
ou imprimir o resultado diretamente.
get_mp3($filepath, $analysis = false, $getframesindex = false)
Basta então informar o nome completo do arquivo que você deseja ler,
incluindo o nome da pasta onde ele está. Se estiver na mesma pasta da classe,
basta o nome.
Se correr tudo bem, ela retornará um array com todos os dados do arquivo
lido, caso contrário retornará “falso”.
A segunda função pública é a set_mp3 escreve os dados no arquivo mp3
indicado.
set_mp3($file_input, $file_output, $id3v2 = array(), $id3v1
= array())
Ela espera receber o nome de dois arquivos, o que vai ser lido e outro para
escrever as alterações. Caso deseje, pode fornecer os dois nomes iguais, mas os
dados anteriores serão sobrescritos.
O código completo desse exemplo você terá disponível nos Materiais Extras
da disciplina e no link abaixo:
http://www.phpclasses.org/browse/file/26606.html
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
144 - 145V
Se correr tudo bem ela retornará “verdadeiro”, caso contrário retornará “falso”.
A terceira função pública é a cut_mp3, que serve para copiar um trecho da
música e gravar em outro arquivo especificado. Tome sempre cuidado, pois se
você especificar o mesmo nome ele será gravado sobre o original, e perderá os
dados anteriores.
cut_mp3($file_input, $file_output, $startindex = 0, $endindex
= -1, $indextype = ‘frame’, $cleantags = false)
Se correr tudo bem ela retornará “verdadeiro”, caso contrário, retornará,
“falso”.
Para criar um objeto “$mp3” devemos utilizar o operador new, instanciando
assim a classe que está em um arquivo chamado “classemp3.php”, que vamos cha-
mar pela diretiva “include”.
include(“./classemp3.php”);
$mp3 = new mp3;
Agora vamos mostrar três exemplos práticos, um para cada método apresen-
tado, porém, esses três métodos podem ser invocados no mesmo script.
Exemplo 1: lendo e imprimindo as informações de identificação da música
gravadas no arquivo.
<?
// Abrir a classe e instanciar criando a variável objeto $mp3
include(“./classemp3.php”);
$mp3 = new mp3;
// indique aqui o nome do arquivo que deseja abrir para operar
$entrada = “nome_arquivo_mp3.mp3”;
// Lendo os dados de um arquivo mp3 e imprimindo no navegador
echo(“<pre>”);
print_r($mp3->get_mp3($entrada, true, false));
echo(“/<pre>”);
?>
Exemplo 2: Alterando as informações de identificação da música grava-
das no arquivo.
Existem dois campos que identificam a música por um conjunto de informa-
ções, chamado “id3v1” e “id3v2”, que diferenciam na quantidade de informações
Operações Sobre Arquivos de Música Tipo Mp3
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
144 - 145
armazenadas. O número que vem após i “id3” indica a versão que pode variar,
tal como, “id3v2.4. As duas formas de identificação podem estar presentes,
porém a mais popular é a primeira, que é mais objetiva, pois as informações ali
armazenadas são: título da música(title), artista (artist), título do CD (album),
ano (year), comentário (comment), reserva (reserv), número da faixa (track) e
o gênero musical (genre).
Uma atenção especial para os três últimos que devem ser valores inteiros:
a reserva para identificação futura, o número da faixa que deve estar entre 0 e
255 e o gênero musical que dever ser o índice de um array com os nomes per-
mitidos pela classe.
<?
// Abrir a classe e instanciar criando a variável objeto $mp3
include(“./classemp3.php”);
$mp3 = new mp3;
// indique aqui o nome do arquivo que deseja abrir para operar
$entrada = “nome_arquivo_mp3.mp3”;
// indique o nome de um arquivo onde serão gravadas as
alterçãoes feitas
$saida = “saida.mp3”;
// preparação dos dados a serem gravados no campo id3v1
$id3v1 = array(
‘title’ => “Título da música”,
‘artist’ => “Artista que canta”,
‘album’ => “Título do CD”,
‘year’ => “Ano da Gravação”,
‘comment’ => “Comentário sobre a música”,
‘reserve’ => 1,
‘track’ => 2,
‘genre’ => 3
);
// invocação do método que altera os dados
$resultado = $mp3->set_mp3($entrada, $saida, array(),
$id3v1);
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
146 - 147V
if($resultado) echo(“Arquivo alterado e salvo na pasta espe-
cificada.<br>”);
else echo(“Erro de escrita no arquivo.<br>”);
// podemos agora imprimir os dados para conferir se foi tudo
escrito como desejávamos
echo(“<pre>”);
print_r($mp3->get_mp3(‘output.mp3’, true, false));
echo(“/<pre>”);
?>
Exemplo 3: Cortando uma música para utilizar como toque de celular.
Após instanciar a classe, basta invocar a função pública cut_mp3, que serve
justamente para copiar um trecho da música e gravar em outro arquivo especi-
ficado. Mas, cuidado! Se você especificar o mesmo nome, ele será gravado sobre
o original e perderá os dados anteriores.
cut_mp3(“nome do arquivo a ser lido”, “nome do arquivo a
ser escrito”, byte inicial, byte final, “frame”’, “limpa
tags” = false)
Se correr tudo bem, ela retornará “verdadeiro”, caso contrário, retornará “falso”.
<?
// Abrir a classe e instanciar criando a variável objeto $mp3
include(“./classemp3.php”);
$mp3 = new mp3;
// indique aqui o nome do arquivo que deseja abrir para operar
$entrada = “nome_arquivo_mp3.mp3”;
// indique o nome de um arquivo onde serão gravadas as
alterçãoes feitas
$saida = “saida.mp3”;
$resultado = $mp3->cut_mp3($entrada, $saida, 0, 200, ‘frame’,
false);
Lembre-se de ajustar as propriedades da pasta alterando o atributo para
permitir escrita, o recomenadado é utilizar o atributo 777.
Operações Sobre Diretórios ou Pastas Remotas
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
146 - 147
if($resultado) echo(“Arquivo cortado e salvo na pasta espe-
cificada.<br>”);
else echo(“Erro no corte.<br>”);
?>
OPERAÇÕES SOBRE DIRETÓRIOS OU PASTAS
REMOTAS
A CLASSE
A Classe dir será utilizada para listar todas as pastas e arquivos em um local
especificado do servidor. É uma classe bem simples, mas é um exemplo interes-
sante por utilizar um método construtor para definir a pasta que deve ser listada
no navegador.
Como se trata de um código bem curto, vamos reproduzir ele inteiro aqui
no livro.
<?
class dir{
function __construct($dir=”/home”){
// varre a pasta
if($ptrdir = opendir($dir)){
// lista as pastas
while(($file = readdir($ptrdir)) !== false){$caminho = $dir.’/’.$file;
if(is_dir($caminho)){
if($_GET[‘pasta’])
$link = $_GET[‘pasta’].”/”;
else
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
148 - 149V
$link = null;
$link .= $file;
echo “<img src=’folderp.jpg’>
<a href=$PHP_SELF?pasta=$link>
<font color=’#ff6600’ face=’tahoma’ size=’2’> “
.$file.
“</font>
</a>
<br> “ ;
}
}
// lista os arquivos
rewinddir($ptrdir);
while(($file = readdir($ptrdir)) !== false){
$caminho = $dir.’/’.$file;
if(is_file($caminho)){
echo “<img src=’filep.jpg’ border=’0’>
<font color=’#000055’face=’tahoma’ size=’2’>”
.$file.”
</font>
<br>”;
}
}
closedir($ptrdir);
}
}
}
?>
Exemplo 1: Listando os arquivos presentes em uma pasta
Como nosso método constructor foi definido com um argumento padrão,
sempre que o objeto for criado sem especificar a pasta, ele assumirá automati-
camente a pasta “/home”.
Buscando Endereços a Partir do CEP no Site dos Correios
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
148 - 149
<?
include(“ClasseDir.php”);
// define a pasta
if($_GET[‘pasta’]) $dir = “/home/”.$_GET[‘pasta’]; // para
mudar de pasta
else $dir = “/home”; // pasta
inicial
$obj = new dir();
?>
BUSCANDO ENDEREÇOS A PARTIR DO CEP NO SITE
DOS CORREIOS
A CLASSE
O Correio brasileiro oferece um bom serviço de endereços que podem ser recu-
perados a partir de um CEP. Nós vamos criar uma classe que utiliza este serviço;
o objetivo é fornecer o CEP e receber o endereço completo de uma localidade
de forma que passamos a agregá-lo nas nossas páginas pessoais.
No PHP existem quatro formas de você acessar uma página externa:
■ com a função fopen() para abri-la como um arquivo texto normal;
■ com a função fsockopen() criando um soquete;
■ com a classe HTTP_Request com apoio do AJAX e;
■ usando a biblioteca cURL .
Cada uma dessas formas são utilizadas para aplicações específicas, mas todas
podem abrir e copiar as informações de uma página indicada pela URL.
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
150 - 151V
O PHP suporta libcurl, uma biblioteca criada por Daniel Stenberg,
que permite que você conecte-se e comunique-se com diferentes tipos
de servidor usando diferentes tipos de protocolos. libcurl atualmente
suporte os protocolos http, https, ftp, gopher, telnet, dict, file, e ldap.
libcurl também suporta certificados HTTPS, HTTP POST, HTTP
PUT, upload via FTP (podendo também ser feito com a extensão ftp
do PHP), upload HTTP por formulário, proxies, cookies, e autentica-
ção com usuário e senha. (<http://www.php.net/manual/pt_BR/intro.
curl.php>)
Portanto, para poder usar a biblioteca cURL é necessário que ela esteja insta-
lada e habilitada.
O coração desta classe está na função curl_setopt_array() que define, uti-
lizando um array, várias opções para uma sessão cURL já aberta pela função
curl_init(). Esta função é útil para a criação de uma grande quantidade de opções
cURL sem repetir a chamada da função mais básica que é a curl_setopt (). A
diferença entre elas, então, é que na curl_setopt () devemos enviar um parâme-
tro de cada vez e na curl_setopt_array() podemos organizá-los em um array e
enviar todos de uma vez.
Vou mostrar agora alguns argumentos que essas duas funções podem receber, são:
■ CURLOPT_URL: indique aqui o endereço URL da página que deseja
buscar os dados, claro que esse endereço também pode ser definido na
inicialização da sessão com curl_init ().
■ CURLOPT_POST: para indicar que a transferência HTTP dos dados deve
ser feita pelo método POST normal, no formato /-www-form-urlenco-
ded x tipo, comumente usado pelos formulários HTML.
Veja todos os parâmetros possíveis no manual PHP: <http://br2.php.net/
manual/pt_BR/function.curl-setopt.php>.
Buscando Endereços a Partir do CEP no Site dos Correios
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
150 - 151
■ CURLOPT_POSTFIELDS: coloque aqui uma string com os dados para
enviar na operação HTTP “POST”.
■ CURLOPT_RETURNTRANSFER: atribua o valor TRUE para retornar
o resultado como uma string de valor para ser utilizada na função curl_
exec () e não para imprimir a página obtida diretamente para o navegador.
<?php
class Correios{
public function cep($cep){
$ch = curl_init();
$dadosCEP = array(
CURLOPT_URL =>’http://m.correios.com.br/movel/ bus-
caCepConfirma.do’,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => “cepEntrada=”.$cep.”&metodo=bus-
carCep”,
CURLOPT_RETURNTRANSFER => TRUE
);
// envia os dados para a página dos correios
curl_setopt_array($ch, $dadosCEP);
// retorna uma página contendo uma tabela com os dados
$resposta = curl_exec($ch);
// fecha a sessão
curl_close($ch);
$string = trim(preg_replace(‘/\s\s+/’, ‘ ‘, $resposta));
preg_match_all(‘/respostadestaque\”>(.*?)<\/span>/’,$s-
tring, $resultado);
return $resultado[1];
}
}
?>
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
152 - 153V
Exemplo 1: Localizando um endereço, complete a partir do CEP.
<form action=”” method=”get”>
Informe o CEP: <input type=”text” name=”cep”>
<input type=”submit” value=”BUSCAR”>
</form>
<?php
if (isset($_GET[‘cep’])){
echo $_GET[‘cep’];
$cep = $_GET[‘cep’];//$cep=”87050390”;
$obj = new Correios;
$endereco = $obj->cep($cep);
echo(“<pre>”);print_r($endereco);echo(“</pre>”);
// manipula cada dado constante do array
echo($endereco[0].”<br>”);
echo($endereco[1].”<br>”);
echo($endereco[2].”<br>”);
echo($endereco[3].”<br>”);
}
?>
O resultado deste exemplo é a impressão no navegador do array e dos dados
constantes do array. É um resultado redundante, mas resolvi fazer assim para
ser mais didático.
Este link vai te levar para um tutorial sobre a biblioteca cURL:
<http://blog.thiagobelem.net/tutorial-basico-de-curl-instalacao-configura-
cao-e-uso/>.
Uma Classe para Acessar o Banco de Dados Mysql
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
152 - 153
Array
(
[0] => Avenida Guedner - até 1935/1936
[1] => Zona 08
[2] => Maringá
[3] => PR
[4] => 87050-390
)
Avenida Guedner - até 1935/1936
Zona 08
Maringá
PR
87050-390
UMA CLASSE PARA ACESSAR O BANCO DE DADOS
MYSQL
Eu construí esta classe especialmente para este livro. Procurei fazer de forma
simples e permitir que você mesmo a amplie de acordo com suas necessidades.
Caso precise aprender um pouco mais sobre o banco de dados MySql utilize o
livro já indicado, Programação II (PHP).
PHP/MYSQL ORIENTADO A OBJETOS
Dando continuidade ao assunto de programação orientada a objetos de uma
forma mais prática, iremos criar classes para trabalhar com registros em banco
de dados. Aqui iremos utilizar o banco de dados MYSQL, por ele ser “free”, mas
você também pode utilizar o POSTGRESQL, pois ele tem compatibilidade com
o PHP.
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
154 - 155V
A programação orientada a objeto corrobora no desenvolvimento de sistemas
com acesso a banco de dados, pois o programadorterá muito menos trabalho
na hora de se conectar a um banco de dados além de ter um código organizado
e com fácil manutenção.
Para que possamos realizar a programação do PHP com o banco de dados,
independente de qual seja, precisamos que realize o ‘start’ do serviço do banco.
Iremos precisar também dos dados de acesso ao banco de dados, tais como: local,
usuário, senha e nome da database.
De porte dos dados de acesso, podemos dar inicio ao nosso projeto, criando
a nossa base de dados. Daremos o nome de EAD para o nosso banco de dados
“database,” e para a tabela o nome de alunos, confira o código abaixo.
CREATE DATABASE IF NOT EXISTS ead;
USE ead;
DROP TABLE IF EXISTS alunos;
CREATE TABLE alunos (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
nome varchar(45) NOT NULL,
curso varchar(45) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
ESTABELECENDO CONEXÃO COM O BANCO DE DADOS
Agora, crie uma pasta ‘classesphp’ para armazena-los as classes do sistema. Nesta
pasta iremos salvar a classe de conexão e a de funções de controle com o banco
de dados.
<?php
//salve este arquivo como conexao.class.php:
class conexao
{
//Note que, precisamos alterar os dados do servidor de acordo
com a realidade do seu servidor, ou seja, colocar os seus dados
de acesso, tais como: local usuário, senha e banco de dados.
private $db_host = ‘localhost’; // servidor
Uma Classe para Acessar o Banco de Dados Mysql
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
154 - 155
private $db_user = ‘root’; // usuário do banco
private $db_pass = ‘’; // senha do usuário do banco
private $db_name = ‘ead’; // nome do banco
private $con = false;
public function connect() // estabelece conexão com o banco
de dados
{
if(!$this->con)
{
$myconn = @mysql_connect($this->db_host,$this->db_
user,$this->db_pass);
if($myconn)
{
$seldb = @mysql_select_db($this->db_name,$myconn);
if($seldb)
{
$this->con = true;
return true;
} else{
return false;
}
} else{
return false;
}
}else{
return true;
}
}
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
156 - 157V
/* A função abaixo realiza o fechamento da conexão com o banco de dados, é
muito importante fechar a conexão para garantir a segurança das transações.*/
public function disconnect()
{
if($this->con)
{
if(@mysql_close())
{
$this->con = false;
return true;
}else{
return false;
}
}
}
}
?>
Agora, a partir de nossa conexão com o servidor de banco de dados, podemos
criar a nossa classe que ira conter as funções que irão realizar as operações com
os registros.
<?php
//Salve este arquivo como controle.class.php:
class controle
{
private $sql_ins=””;
private $tabela=””;
private $sql_sel=””;
public function __construct($tabela) // construtor, nome
da tabela como parametro
{
$this->tabela = $tabela;
return $this->tabela;
}
Uma Classe para Acessar o Banco de Dados Mysql
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
156 - 157
/*Esta função realizará a inserção dos campos e seus respectivos valores como
parâmetros, não se importando com a quantidade e nomes*/
public function inserir($campos, $valores)
{
$this->sql_ins = “INSERT INTO “ . $this->tabela . “ ($cam-
pos) VALUES ($valores)”;
if(!$this->ins = mysql_query($this->sql_ins))
{
die (“<center>Erro na inclusão “ . ‘<br>Linha: ‘ .
__LINE__ . “<br>” . mysql_error() . “<br>
<a href=’index.php’>Voltar ao Menu</a></center>”);
}else{
print “<script>location=’index.php’;</script>”;
}
}
/*Esta função realizara a edição dos campos com seus respectivos valores e o
campo id que define a linha a ser editada como parâmetros*/
public function atualizar($camposvalores, $where = NULL)
{
if ($where)
{
$this->sql_upd = “UPDATE “ . $this->tabela . “ SET
$camposvalores WHERE $where”;
}else{
$this->sql_upd = “UPDATE “ . $this->tabela . “ SET
$camposvalores”;
}
if(!$this->upd = mysql_query($this->sql_upd))
{
die (“<center>Erro na atualização “ . “<br>Linha: “ .
__LINE__ . “<br>” .mysql_error() . “<br>
<a href=’index.php’>Voltar ao Menu</a></center>”);
}else{
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
158 - 159V
print “<center>Registro Atualizado com Sucesso!<br><a
href=’index.php’>Voltar ao Menu</a></center>”;
}
}
/*Esta função realizara a exclusão do registro, campo que define a linha a ser
editada como parâmetro*/
public function excluir($where = NULL)
{
if ($where)
{
$this->sql_sel = “SELECT * FROM “ . $this->tabela .
“ WHERE $where”;
$this->sql_del = “DELETE FROM “ . $this->tabela . “
WHERE $where”;
}else{
$this->sql_sel = “SELECT * FROM “ . $this->tabela;
$this->sql_del = “DELETE FROM “ . $this->tabela;
}
$sel=mysql_query($this->sql_sel);
$regs=mysql_num_rows($sel);
if ($regs > 0){
if(!$this->del = mysql_query($this->sql_del))
{
die (“<center>Erro na exclusão “ . ‘<br>Linha: ‘ . __
LINE__ . “<br>” .mysql_error() .”<br>
<a href=’index.php’>Voltar ao Menu</a></center>”);
}else{
print “<center>Registro Excluído com Sucesso!<br>
<a href=’index.php’>Voltar ao Menu</a></center>”;
}
}else{
print “ <center>Registro Não encontrado!<br>
<a href=’index.php’>Voltar ao Menu</a></center>”;
}
}
}
?>
Uma Classe para Acessar o Banco de Dados Mysql
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
158 - 159
No código abaixo, iremos criar o arquivo ‘index.php’, que permitira que você
liste todos os registros que estão cadastrados na tabela alunos, bem como pos-
sibilita que você possa editar ou excluir o registro.
<?php
//index.php:
require_once ‘classesphp/conexao.class.php’;
require_once ‘classesphp/controle.class.php’;
$con = new conexao(); // instancia classe de conexão
$con->connect(); // abre conexão com o banco
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; char-
set=UTF-8”>
<title>Controle de alunos do EAD</title>
</head>
<body>
<?php
if($con->connect() == true){
echo ‘Conectou’;
}else{
echo ‘Não conectou’;
}
?>
<a href=”formulario.php”>
Novo
</a>
<table>
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
160 - 161V
<thead>
<tr>
<th>
Nome
</th>
<th>
Curso
</th>
</tr>
</thead>
<tbody>
<?php
//query que busca todos os dados da tabela alunos
$consulta = mysql_query(“SELECT * FROM alunos”);
// laço de repetição que vai trazer todos os resul-
tados da consulta
while($campo = mysql_fetch_array($consulta)){
?>
<tr>
<td>
<?php echo $campo[‘nome’]; // mos-
trando o campo NOME da tabela ?>
</td>
<td>
<?php echo $campo[‘curso’]; // mos-
trando o campo CURSO da tabela ?>
</td>
<td>
<a href=”formulario.php?id=<?php echo
$campo[‘id’]; //pega o campo ID para a ediçao ?>”>
Editar
</a>
</td>
<td>
Uma Classe para Acessar o Banco de Dados Mysql
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
160 - 161
<a href=”excluir.php?id=<?php echo
$campo[‘id’]; //pega o campo ID para a exclusao ?>”>
Excluir
</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</body>
</html>
<?php $con->disconnect(); // fecha conexão com o banco ?>
Podemos usar o mesmo formulário para cadastro e edição, apenas com algum
código a mais, vale a pena dependendo do caso.
<?php
//formulario.php:
require_once ‘classesphp/conexao.class.php’;
require_once ‘classesphp/controle.class.php’;
$con = new conexao(); // instancia classe de conexão
$con->connect(); // abre conexão com o banco
@$getId = $_GET[‘id’]; //pega id para edição caso exista
if(@$getId){ //se existir recupera os dados e tras os cam-
pos preenchidos
$consulta = mysql_query(“SELECT * FROM alunos WHERE id =
+ $getId”);
$campo = mysql_fetch_array($consulta);
}
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
162 - 163V
if(isset ($_POST[‘cadastrar’])){ // caso não seja passado o
id via GET cadastra
$nome = $_POST[‘nome’]; //pega o elemento com o pelo NAME
$curso = $_POST[‘curso’]; //pega o elemento com o pelo NAME
$controle = new controle(‘alunos’); // instancia classe com
as operações controle, passando o nome da tabela como parâmetro
$controle->inserir(“nome,curso”, “’$nome’,’$curso’”); //
utiliza a função INSERIR da classe controle
header(“Location: index.php”); // redireciona para a listagem
}
if(isset ($_POST[‘editar’])){ // caso seja passado o id via
GET edita
$nome = $_POST[‘nome’]; //pega o elemento com o pelo NAME
$curso = $_POST[‘curso’]; //pega o elemento com o pelo NAME
$controle = new controle(‘alunos’); // instancia classe com
as operações controle, passando o nome da tabela como parâmetro
$controle->atualizar(“nome=’$nome’,curso=’$curso’”, “id=’$ge-
tId’”); // utiliza a função ATUALIZAR da classe controle
header(“Location: index.php”); // redireciona para a listagem
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html;
charset=UTF-8”>
<title></title>
</head>
Uma Classe para Acessar o Banco de Dados Mysql
Re
pr
od
uç
ão
p
ro
ib
id
a.
A
rt
. 1
84
d
o
Có
di
go
P
en
al
e
L
ei
9
.6
10
d
e
19
d
e
fe
ve
re
iro
d
e
19
98
.
162 - 163
<body>
<form action=”” method=”post”><!-- formulário carrega a
si mesmo com o action vazio -->
<label>Nome:</label>
<input type=”text” name=”nome” value=”<?php echo @$cam-
po[‘nome’]; // trazendo campo preenchido caso esteja no modo de
ediçao ?>” />
<br /> <br />
<label>Curso</label>
<input type=”text” name=”curso” value=”<?php echo @$cam-
po[‘curso’]; // trazendo campo preenchido caso esteja no modo de
edição ?>” />
<br /> <br />
<?php
if(@!$campo[‘id’]){ // se não passar o id via GET não
está editando, mostra o botão de cadastro
?>
<input type=”submit” name=”cadastrar” value=”Cadastrar”/>
<?php }else{ // se passar o id via GET está editando,
mostra o botão de edição ?>
<input type=”submit” name=”editar” value=”Editar”/>
<?php } ?>
</form>
</body>
</html>
<?php $con->disconnect(); // fecha conexão com o banco
?>
E por fim iremos criar o arquivo ‘excluir.php’, que tem como objetivo deletar o
registro selecionado da tabela, a partir da seleção do um link da pagina ‘index.php’.
APLICAÇÕES COM PHP ORIENTADO A OBJETOS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
164 - 165V
<?php
//excluir.php:
require_once ‘classesphp/conexao.class.php’;
require_once ‘classesphp/controle.class.php’;
$con = new conexao(); // instancia classe de conexão
$con->connect(); // abre conexão com o banco
$controle = new controle(‘alunos’); // instancia classe com
as operações controle, passando o nome da tabela como parâmetro
$id = $_GET[‘id’]; //pega id para exclusão caso exista
$controle->excluir(“id = $id”); // exclui o registro com o
id que foi passado
$con->disconnect(); // fecha a conexão
header(“Location: index.php”); // redireciona para a listagem
?>
CONSIDERAÇÕES FINAIS
Trabalhar com programação orientada a objetos é tão simples quanto trabalhar
com programação estruturada e te dará uma série de vantagens: encapsulamento
de informação, organização, portabilidade, reaproveitamento de código.
Como vimos, ao decorrer das duas últimas unidades, uma classe é um con-
junto de variáveis e funções relacionadas intrinsecamente. Com o encapsulamento,
o programador usuário de uma classe não precisa saber como é que ela é imple-
mentada, basta conhecer a interface, ou seja, os métodos públicos disponíveis.
Uma classe criada é um novo tipo de dado, portanto, não poderá ser atribuída
nenhuma variável comum, mas somente do tipo criado.
164 - 165
A partir das indicações abaixo, você econtrará os links para todas as aulas deste
autor.
Curso de PHP Orientado a Objetos - Aula 01 - Criando Classes
<http://www.youtube.com/watch?v=rAkJOH5Gz7U>.
Curso de PHP Orientado a Objetos - Aula 02 - Criando Objetos
<http://www.youtube.com/watch?v=F50HMOP_rK0>.
Curso de PHP Orientado a Objetos - Aula 03 - Configurando Servidor
<http://www.youtube.com/watch?v=heX78K9DSro>.
Curso de PHP Orientado a Objetos - Aula 04 - Testando a Classe
<http://www.youtube.com/watch?v=DMQKYLKV25M>.
Vimos ao longo dos exemplos de programação orientada a objetos, espe-
cialmente na Unidade V, que trabalhar classes em arquivos separados é uma
vantagem. Esta técnica permite a vários programadores trabalhar sobre elas ao
mesmo tempo, pois cada um conhece a interface da classe em que o outro está
trabalhando sem a necessidade de conhecer como ela foi construída.
166 - 167166 - 167
1. Construa uma classe que gere números aleatórios colocando-os em um array
ordenado.
2. Construa uma classe que descubra se um número é par ou ímpar utilizando o
algoritmo desenvolvido nas Atividades da Unidade III.
3. Construa uma classe que gere uma senha automática utilizando o algoritmo de-
senvolvido nas Atividades da Unidade III.
166 - 167
CONCLUSÃO
166 - 167
Escrevi este livro especialmente para o curso de Sistemas para Internet para o Ensi-
no a Distância da Unicesumar e espero, realmente, que ele tenha sido útil para for-
mar um programador de PHP ORIENTADO A OBJETOS motivado para desenvolver
excelentes sistemas computacionais para a Internet.
Na Unidade I, ensinei comofazer uma página pessoal para a Internet utilizando a
linguagem de apresentação HTML. Mas pense um pouco sobre isto, você aprendeu
como construir formulários inteligentes e bonitos para compor a ferramenta de en-
trada dos seus scripts PHP, com esse conteúdo, você é capaz de trabalhar no setor
de desenvolvimento para grandes empresas ou para você mesmo, caso deseje ser
um empresário.
Na Unidade II, começamos com a linguagem PHP, como se estivéssemos aprenden-
do juntos. Eu procurei passar os conceitos bem devagar para que você navegasse
em águas tranquilas, absorvendo cada conceito, como se eles fossem muito fáceis
ou, às vezes, como se você já os conhecesse.
A Unidade III, um pouco mais à frente em conteúdo, te ensinou a programar de ver-
dade de forma estruturada. Você aprendeu a utilizar as estruturas de programação
conhecidas mundialmente em todas as linguagens conceituadas no meio acadêmi-
co e no meio empresarial. Da comparação à repetição, passo a passo, você consegue
agora criar suas próprias soluções computacionais.
Na Unidade IV, eu escrevi para você um pouco da teoria da orientação a objetos e
sobre a técnica da programação orientada a objetos. Com ela você consegue escre-
ver programas cujos módulos podem ser reaproveitados em qualquer outro pro-
grama. Uma classe bem escrita serve para a vida toda e você pode agora criar uma
biblioteca particular de classes, como aquela que já existe no servidor PHP, mas toda
sua, uma biblioteca que só você tem.
Para finalizar este livro, eu mostrei como criar classes específicas, por exemplo, para
acessar o banco de dados.
Durante todo este curso tentei ensiná-lo(a) as boas técnicas de programação, mas
tive o grande objetivo de dar a você um diferencial em relação aos outros progra-
madores.
Aproveite bem!
168 - 169
REFERÊNCIAS
168 - 169
DALL´OGLIO, Pablo. PHP: Programando com Orientação a Objetos. São Paulo: Edi-
tora Novatec, 2009.
SICA, Carlos. PHP com Tudo. Rio de Janeiro: Editora Ciência Moderna, 2011.
SICA, Carlos. PHP orientado a objetos. Rio de Janeiro: Editora Ciência Moderna,
2006.
SICA, Carlos. Programação Segura Utilizando PHP. Rio de Janeiro: Editora Ciência
Moderna, 2007.
SOARES, Rafael. PHP para Iniciantes. Rio de Janeiro: Editora Ciência Moderna, 2012.
TOLEDO, Carlos Benedito Sica de. Programação I (PHP). Maringá: EAD Unicesumar,
2013.
______. Programação II (PHP). Maringá: EAD Unicesumar, 2013.
XAVIER, Fabrício S. V. PHP: do básico à orientação de objetos. Rio de Janeiro: Editora
Ciência Moderna, 2008.
<http://php.net/>
<http://www.w3schools.com/html/>
<http://www.w3schools.com/php/>
< h t t p : / / p t g m e d i a . p e a r s o n c m g . c o m / i m a g e s / 0 1 3 1 4 7 1 4 9 X / d o w n l o -
ads/013147149X_book.pdf>
<http://www.allinterview.com/showanswers/29174.html>
<http://www.java2s.com/Code/Php/Class/Implementaninterface.htm>
<http://www.java2s.com/Code/Php/Class/Differentclassimplementsoneinterface.
htm>
<http://en.kioskea.net>
<http://www.webopedia.com/TERM/B/big_endian.html>
<http://pt.wikipedia.org/wiki/Defini%C3%A7%C3%A3o_recursiva>
<http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_modular>
<http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturada>
170 - 171
GABARITO
170 - 171
UNIDADE I - A LINGUAGEM HTML
ATIVIDADES
1. Qual a diferença entre os quatro cabeçalhos possíveis?
O primeiro deles é delimitado pelas tags <head></head> e o texto que
fica entre elas aparecerá na barra localizada no topo do navegador.
O segundo é o cabeçalho dos textos que aparecem na tela do navegador e
são delimitados pelas tags <h1></h1> até <h6></h6>, hierarquicamente.
Nas tabelas também é possível criar linhas de topo encabeçando elas,
para isto, utilizamos as tags <th></th> delimitando os textos que apare-
cerão nas células superiores.
Por fim, existem os cabeçalhos do protocolo HTTP que não foram estu-
dados aqui, mas serão oportunamente ainda neste curso.
2. Porque um <input> do tipo file é tão especial e diferente dos outros?
O tipo file serve para enviar um arquivo existente, do computador cliente
para o computador servidor. Quando isto acontece, é criado um array espe-
cífico chamado FILE[], ele conterá a descrição de cada arquivo enviado.
O script PHP deve utilizar funções específicas para recebê-los, diferen-
temente das variáveis que se concentram no array GET[] ou POST[].
3.Crie uma página contendo um formulário completo para recolher os dados
que compõem a ficha de um cliente, incluindo sua foto. Utilize tabela para
formatar a interface visualmente.
<html>
<head>
<title> Ficha de inscrição </title>
</head>
<body>
<form action = “./fotolog.php” method = “post” name =
“form” enctype = “multipart/form-data”>
GABARITO
172 - 173
<table border=”1”>
<tr>
<td align=”rigth”>Nome:</td>
<td><input type=”text” size=”50” maxlength=”100”
name=”nome” value=””></td>
</tr>
<tr>
<td align=”rigth”>Endereço:</td>
<td><input type=”text” size=”50” maxlength=”100”
name=”endereco” value=””></td>
</tr>
<tr>
<td align=”rigth”>telefone:</td>
<td><input type=”text” size=”20” maxlength=”20”
name=”telefone” value=””></td>
</tr>
<tr>
<td align=”rigth”>Foto:</td>
<td><input type = “file” name=”foto”></td>
</tr>
<tr>
<td align=”center” colpsan=”2”><input type = “sub-
mit” value=”Enviar”></td>
</tr>
</table>
</form>
</body>
</html>
UNIDADE II - A LINGUAGEM PHP
1. A linguagem PHP trabalha com variáveis tipadas?
Sim, a tipagem é automática e admite os tipos:
GABARITO
172 - 173
■ Inteiro.
■ Real (Ponto flutuante).
■ Caracteres (char).
■ Cadeias (sequências ou arranjos) de caracteres (String).
■ Cadeias (sequências ou arranjos) de dados (Array).
■ Objeto (somente para a programação orientada a objetos).
2. O que são Variáveis e como são compostos seus nomes?
As variáveis são posições de memória do computador, onde são armazenados os
dados. Em PHP, toda variável deve ter seu nome inicializado pelo caractere “$”
e após ele, vem uma sequência de caracteres que deve ser iniciada por uma letra
ou pelo caractere “_” e as letras maiúsculas são diferenciadas das minúsculas.
3. O que são Constantes e como elas se diferenciam das Variáveis?
Constantes, como o próprio nome diz, não podem ter seus valores alterados.
Isto acontece porque elas não ocupam memória, mas fazem parte do código do
programa e é esta, justamente, a diferença entre elas e as variáveis que têm seus
valores guardados na memória e podem ser alterados ao longo do programa.
4. Quais são os operadores aritméticos e qual a sua ordem de precedência?
Lembrando os operadores:
Operador Ação
- Subtração, também menos unário
+ Adição
* Multiplicação
/ Divisão
% Módulo da divisão (resto)
Existem dois operadores especiais chamados unários de incremento e
decremento
Operador Ação
++ incremento
-- decremento
GABARITO
174 - 175
A ordem de precedência dos operadores aritméticos é como segue:
Mais alta ++, --
- (menos unário)
*, /, %
Mais baixa +, -
5. Deslocar um número inteiro de um bit para a direita significa qual opera-
ção matemática? E para a esquerda?
Deslocar um bit para direita significa dividir um número por 2 e para a esquerda
multiplicar ele por 2.
6. O caractere de controle “\n” corresponde a uma “nova linha” e aparece na
literatura como parte do conjunto de caracteres de controle PHP. Por que os
navegadores não respondem a esse controle?
Esses caracteres de controle são atuantes na tela do computador local, mas não
no navegador, pois os navegadores entendem e obedecem somente os controle
HTML.
7. O que é escopo de uma variável?
O escopo, apesar da palavra complicada, tem uma explicação simples: é tempo
de vida de uma variável e, em outras palavras, o tempo queela permanece na
memória. Se for uma variável global, ela permanecerá viva durante toda a exe-
cução do programa ou script, se for local, ela viverá apenas durante a execução
da função que a criou.
8. Sobre uma variável static, pode-se dizer que:
É uma variável definida localmente, dentro de uma função, porém ela será man-
tida viva, na memória, e seu valor será preservado na execução do script, mesmo
quando a função for encerrada. Quando a mesma função for invocada novamente, a
variável estática terá o mesmo valor quando a função foi encerrada pela última vez.
Esta técnica dá para a variável uma visibilidade local, o que significa que ela
só pode ser acessada dentro da função, porém seu valor é mantido vivo durante
o escopo global.
GABARITO
174 - 175
9. Explique as quatro formas de se criar arranjos (arrays) em PHP.
Forma 1:
$arr = ARRAY(“Zero’, “Um”, “Dois”, “Três”);
Forma 2:
$arr[0] = “Zero”;
$arr[1] = “Um”;
$arr[2] = “Dois”;
$arr[3] = “Três”;
Forma 3:
$cor = array(0=>”Zero”, 1=> “Um”, 2 => “Dois”, 3=>”Três”);
Forma 4:
$cor = array(“Zero”, “Um”, “Dois”, “Três”);
10. O que é uma lista e no que ela difere de um arranjo (array)?
Uma lista é um conjunto de variáveis independentes, já um array é uma
sequência de valores contíguos. Uma lista de variáveis pode receber os valores
de cada posição do array.
11. Liste todas as variáveis externas e variáveis de ambiente do PHP utili-
zando a função PHPInfo().
<?
PHPinfo();
?>
12. Desenvolva um programa em PHP que receba um número pelo método
GET, concatenado ao final do endereço do script, e calcule a raiz quadrada
dele, apresentando o resultado na tela do navegador, formatado como segue:
“A raiz quadrada de 25 é: 5”.
Script chamado:raiz.php
<?
echo(“A raiz quadrada de “.$_GET[‘numero’].” é:”. srqt($_
GET[‘numero’]);
?>
GABARITO
176 - 177
Chamada: raiz.php?numero=25
13. Implemente um script que leia um número de um formulário e calcule a
raiz quadrada dele, apresentando o resultado na tela do navegador, forma-
tado como segue:
“A raiz quadrada de 25 é: 5”.
<html>
<head><title>Raiz quadrada</title>
</head>
<body>
Digite um número <br>
<form method=GET action=”<? echo $PATH_INFO; ?>”>
<input type=”text” name=”num” value=”” size=10><br>
<input type=”submit” value=”Enviar!”>
</form>
<?
$num = $_GET[‘num’];
echo(“A raiz quadrada de $num é: “. sqrt($num));
?>
</body>
</html>
14. Desenvolva um programa em PHP que receba um número pelo método
GET, utilizando um formulário, e calcule pelo menos o seno, o cosseno e a tan-
gente dele, apresentando o resultado na tela do navegador em forma de tabela.
<html>
<head><title>Funções Trigonométri-
cas</title></head>
<body>
Digite um número <br>
<form method=GET action=”<? echo $PATH_INFO; ?>”>
<input type=”text” name=”num” value=”” size=10><br>
GABARITO
176 - 177
<input type=”submit” value=”Enviar!”>
</form>
<table border=1>
<tr><td colspan=2>Funções Trinogom&eacu-
te;tricas</td></tr>
<?
$num = $_GET[‘num’];
echo(“<tr><td>Seno</td><td>”. sin($num).”</td></tr>”);
echo(“<tr><td>Coseno</td><td>”. cos($num).”</td></tr>”);
echo(“<tr><td>Tangente</td><td>”. tan($num).”</td></
tr>”);
?>
</table>
</body>
</html>
UNIDADE III - ESTRUTURAS DE PROGRAMAÇÃO
1. Cite as estruturas de decisão que também podem ser chamadas de sele-
ção ou comparação.
São duas (if e switch).
A primeira pode ser utilizada de três maneiras:
(if)
(if-else)
(if-else-if)
A segunda é a (switch-case) que escolhe uma opção dentre muitas.
2. Cite as estruturas de repetição ou iteração.
São três tradicionais e uma específica para arrays: for, do-while, while-do
e foreach.
GABARITO
178 - 179
3. Cite todos os desvios explícitos e explique em que momentos podem ser
utilizados e quando são obrigatórios.
São eles:
O break, utilizado obrigatoriamente na estrutura switch-case.
O return, utilizado em funções que retornam valores.
O continue, que desvia o fluxo sem promover ação.
O exit, que encerra a execução de um script.
4. Escreva um script que crie um array de números aleatórios
echo “<pre>”;
$ultimo = 100;
$questoes = 20;
$i = 0;
// gera um array de números aleatórios sem repetição
while($i < $questoes){
$num = rand(1,$ultimo);
if($i == 0){ // primeira vez, não há nada para comparar
$escolha[$i] = $num;
$i++;
}else{ // monta o array a partir da segunda posição
$igual = false;
for($j = 0; $j <= $i; $j++){
if($num == $escolha[$j]){ // se encontar um número já
$igual = true; // contante do array
break; // pula a iteração
}
}
if(!$igual){ // se for diferente,
$escolha[$i] = $num; // atribui e
$i++; // pula para a proxima posição do array
}
}
}
GABARITO
178 - 179
array_multisort($escolha); // ordena o array
print_r($escolha);
5. Escreva um “switch-case” que selecione a faixa de valores 0 a 3 e de 17 a 20.
Switch($valor){
case 0:
case 1:
case 2:
case 3: echo(“Se \$valor contiver um número entre 0 e
3 vai entrar aqui.”;
break;
case 17:
case 18:
case 19:
case 20: echo(“Se \$valor contiver um número entre 17 e
20 vai entrar aqui.”;
break;
default: echo(“\$valor contém um número fora da faixa
requerida.”;
}
6. Escreva um script que receba um número qualquer e determine se ele é
par ou ímpar.
<html>
<head><title>Exemplo elaborado por Carlos Sica - 2003</
title></head>
<body>
Digite um número <br>
<form method=post action=”<? echo $PHP_SELF; ?>”>
<input type=”text” name=”num” value=”” size=10><br>
<input type=”submit” value=”Enviar!”>
</form>
GABARITO
180 - 181
<?php
$num = $_POST[‘num’];
if (!is_numeric($num)){ // testa se é um número ou uma string
echo “Digite um número.”;
exit;
}
if($num != “”){ // se estiver vazio não faz nada
if (($num % 2) != 0)
echo $num,” é ímpar”; // se há resto na divisão
por 2 é ímpar
else
echo $num,” é par”; // se não há resto na divi-
são por 2 é par
}
?>
</body>
</html>
7. Escreva um script que gera uma senha automaticamente
$tamanho_senha = 8;
$string = “abcdefghijklmnopqrstuvwxyz1234567890ABC-
DEFGHIJKLMNOPQRSTUVWXYZ”;
for ($i=1;$i<=$tamanho_senha;$i++)
{
echo $i.” - “;
$pos = rand(0,(strlen($string)-1));
echo “posição: “.$pos.” = “;
$digito = substr($string,$pos,1);
echo “digito: “.$digito.”<br>”;
$senha_automatica.=$digito;
}
echo “<br>senha: “.$senha_automatica;
GABARITO
180 - 181
8. Escreva um script que construa uma tabela dos valores em graus Fahrenheit
e Celsius entre -10 e +10.
<html>
<head><title>Funções Trigonométri-
cas</title></head>
<body>
<table border=1>
<tr><td>Farenheit</td><td>Centígrados</td></tr>
<?
$menor=-50;
$maior=50;
$fahr = $menor;
while ($fahr <= $maior){
$celsius = 5 * ($fahr-32) / 9;
echo(“<tr><td>”.$fahr.”</td><td>”.$celsius.”</td></
tr>”);
$fahr = $fahr + 10;
}
?>
</table>
</body>
</html>
UNIDADE IV - INTRODUÇÃO AO PHP ORIENTADO A OBJETOS
1. Desenvolva um programa completo utilizando polimorfismo. Ele deve ter
uma classe abstrata chamada Tfigura e pelo menos três classes concretas cha-
madas: Tcirculo, Tquadrado e Ttriangulo.
abstract class Tfigura{
abstract function desenha()
}
GABARITO
182 - 183
class Tcirculo extends Tfigura{
function desenha(){
echo(“Bola”);
}
}
class Ttriangulo extends Tfigura{
function desenha(){
echo(“Triângulo”);
}
}
class Tquadrado extends Tfigura{
function desenha(){
echo(“Quadro”);
}}
class Tcria_lista{
var $array_polimorfo = array(); // cria array
function insere($objeto_figura){
$this->array_polimorfo[] = $objeto_figura; // insere
objeto no array
}
}
$obj_lista = new Tcria_lista;
$obj = new Tcirculo;
$obj_lista->insere($obj);
$obj = new Ttriangulo;
$obj_lista->insere($obj);
$obj = new Tquadrado;
$obj_lista->insere($obj);
echo(“primeiro elemento: “);
$obj_lista->array_polimorfo[0]->desenha();
echo(“<br>segundo elemento: “);
$obj_lista->array_polimorfo[1]->desenha();
GABARITO
182 - 183
echo(“<br>terceiro elemento: “);
$obj_lista->array_polimorfo[2]->desenha();
echo(“<pre>”);
print_r($obj_lista->array_polimorfo);
echo(“ <br>”);
var_dump($obj_lista->array_polimorfo);
2. Construa uma classe simples e o trecho do programa que a instancia e testa
todos os seus métodos e atributos. Esta classe deve ter um atributo de cada
nível de abstração: público, privado e protegido.
class Texemplo{
public $a;
protected $b;
private $c;
public function imprime($y){
echo“Impresso pela função: “.$y.”<br>”;
}
public function muda_b($x){
$b = $x;
echo“Impresso pela função: “.$b.”<br>”;
}
public function muda_c($x){
$c = $x;
echo“Impresso pela função: “.$c.”<br>”;
}
}
$obj = new Texemplo;
// público
// pode ser manipulado sem restrições pelo programa principal
$obj->a = 4;
$obj->imprime($obj->a);
echo“Impresso pelo programa principal: “.$obj->a.”<br>”;
// protegido
GABARITO
184 - 185
// causa erro quando é manipulado sem restrições como nas
3 linhas abaixo
// $obj->b = 4;
// $obj->imprime($obj->b);
// echo(“Impresso pelo programa principal: “.$obj->b.”<br>”;
$obj->muda_b(5);
// privado
// causa erro quando é manipulado sem restrições como nas
3 linhas abaixo
// $obj->c = 4;
// $obj->imprime($obj->c);
// echo(“Impresso pelo programa principal: “.$obj->c.”<br>”;
$obj->muda_c(6);
3. Desenvolva uma classe completa contendo pelo três funções: Construtura,
Destrutora e de informação. Instancie-a e mostre o funcionamento e, ao final,
remova o objeto da memória para mostrar que a função Destrutora funciona.
class Texemplo{
public $a;
public function imprime($b){
echo(“Impresso pela função: “.$b.”<br>”);
}
public function __construct(){
echo(“Um objeto foi criado pelo PHP5<br>”);
}
public function __destruct(){
echo(“Um objeto foi destruído pelo PHP5<br>”);
}
}
GABARITO
184 - 185
$obj = new Texemplo;
$obj->a = 4;
$obj->imprime($obj->a);
echo(“Impresso pelo programa principal: “.$obj->a.”<br>”);
unset($obj);
4. Desenvolva uma Interface e a Classe que a implementa, crie o objeto e teste
todas as funcionalidades dos métodos.
interface MinhaInterface{
public function mostra();
public function ajusta($a);
}
class MinhaClasse implements MinhaInterface{
private $priv = “teste de variável privada”;
public function mostra(){
echo(“Esta função pública informa o valor da variável
privada: “.$this->priv);
}
public function ajusta($a){
echo(“Esta função recebe um valor e copia para a vari-
ável privada.”);
$this->priv = $a;
}
}
$obj = new MinhaClasse;
$obj->mostra();
echo(“<br>”);
$obj->ajusta(“Novo valor da variável privada”);
echo(“<br>”);
$obj->mostra();
GABARITO
186 - 187
UNIDADE V - APLICAÇÕES COM PHP ORIENTADO A OBJETOS
1. Construa uma classe que gere números aleatórios colocando-os em um
array ordenado.
<?
// classe
class geraarray{
public function gerador($questoes, $ultimo){
$i = 0;
// gera um array de números aleatórios sem repetição
while($i < $questoes){
$num = rand(1,$ultimo);
if($i == 0){ // primeira vez, não há nada para
comparar
$escolha[$i] = $num;
$i++;
}else{ // monta o array a partir da segunda posição
$igual = false;
for($j = 0; $j <= $i; $j++){
if($num == $escolha[$j]){ // se encontar
um número já
$igual = true; // contante do array
break; // pula a iteração
}
}
if(!$igual){ // se for diferente,
$escolha[$i] = $num; = // atribui e
$i++; // pula para a proxima posição
}
}
}
array_multisort($escolha); =// ordena o array
echo “<pre>”;
GABARITO
186 - 187
print_r($escolha);
echo “</pre>”;
}
}
// programa principal
$obj = new geraarray;
echo “<pre>”;
print_r($obj->gerador(6, 100));
echo “</pre>”;
?>
2. Construa uma classe que descubra se um número é par ou ímpar utili-
zando o algoritmo desenvolvido na Atividade de Autoestudo da Unidade III.
3. Construa uma classe que gere uma senha automática utilizando o algo-
ritmo desenvolvido nas Atividades da Unidade III.