Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

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
&lt; <
&gt; >
&amp; &
&#186; o
&#184; ©
&acute; á
&Acute; Á
&acirc; â
&Acirc; Â
&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
&Agrave; À
&atilde; ã
&Atilde; Ã
Idem para as vogais e, i, o u. ...
&ccdil; ç
&Ccedil; Ç
&uuml; ü
&Uuml; Ü
&nbsp; “espaço em branco”
&rarr; “seta para a direita”
&larr; “seta para a esquerda”
&uarr; “seta para cima”
&darr; “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&ccedil;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&ccedil;&otilde;es Trigonom&eacute;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&ccedil;&otilde;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&ccedil;&otilde;es Trigonom&eacute;tri-
cas</title></head>
 <body>
 <table border=1>
 <tr><td>Farenheit</td><td>Cent&iacute;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(“&nbsp;<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.

Mais conteúdos dessa disciplina