Sunteți pe pagina 1din 98

Desenvolvimento WEB III

Todos os direitos reservados ao


Projeto e-Jovem
Secretaria da Educao do estado do Cear - Centro Administrativo Governador Virglio Tvora
Coordenadoria da Educao Profissional - 2 andar - Bloco C
Av. General Afonso Albuquerque Lima, S/N - Cambeba - Fortaleza/Cear
CEP 60839-900 - Tel. (85) 3101.3928
Site: www.projetoejovem.com.br
E-mail: faleconosco@projetoejovem.com.br
Ano de Publicao: 2016
Camilo Sobreira de Santana
Governador
Maria Izolda Cela de Arruda Coelho
Vice-governadora
Antonio Idilvan de Lima Alencar
Secretrio da Educao
Mrcia Oliveira Cavalcante Campos
Secretria Adjunta da Educao
Antonia Dalila Saldanha de Freitas
Secretria Executiva da Educao

Coordenadoria de Desenvolvimento da Escola e da Aprendizagem


/ Protagonismo Estudantil
Anna Margarida Vicente Santiago
Ncleo de Coordenao do Projeto e-Jovem SEDUC
Andr Luis Arajo de Carvalho
Jlio Csar Cavalcante Bezerra
--------------------------Expediente:
Orientador de Produo de Contedo Projeto e-Jovem SEDUC
Sanso Mendes de Oliveira Junior
Edio de Contedo
Fabrcio Silva Rosal
Reviso Didtica
Adriano Silva Lima
Reviso Ortogrfica
Daniele Lima de Paula
Diagramao e Formatao Final
Jucimar de Souza Lima Junior
Projeto Grfico
Jucimar de Souza Lima Junior
Capa
Jssica de Arajo Oliveira

Desenvolvimento WEB III

Sumrio
Captulo 1. PHP ................................................................................................................................ 7
1.1. O que PHP .......................................................................................................................... 7
1.1.1. Um pouco da Histria do PHP. ...................................................................................... 8
1.2. Instalao do Servidor PHP ................................................................................................... 8
1.2.1. Instalao Apache. ......................................................................................................... 8
1.2.2. Instalao Php5. ............................................................................................................. 9
1.3. Caractersticas de um programa PHP. ................................................................................. 10
1.3.1. Imprimindo algo no navegador WEB via PHP. ........................................................... 10
1.3.2. Comentrios PHP ......................................................................................................... 11
Captulo 2. Iniciando um Projeto com Netbeans. ........................................................................... 12
2.1. Tipos Primitivos .................................................................................................................. 14
2.1.1. Tipos de Primitivos de Dados ...................................................................................... 14
2.2. Exerccios Propostos ........................................................................................................... 14
Captulo 3. Atribuies em PHP ..................................................................................................... 15
3.1. Variveis .............................................................................................................................. 15
3.2. Tipos de Variveis ............................................................................................................... 16
3.2.1. Tipo booleano............................................................................................................... 16
3.2.2. Tipo inteiro ................................................................................................................... 17
3.2.3. Tipo ponto flutuante: .................................................................................................... 17
3.2.4. Tipo numrico .............................................................................................................. 17
3.2.5. Tipo String ................................................................................................................... 18
3.2.6. Tipo array ..................................................................................................................... 18
3.2.7. Tipo objeto ................................................................................................................... 18
3.2.8. Tipo recurso ................................................................................................................. 18
3.2.9. Tipo null ....................................................................................................................... 18
3.3. Constantes ........................................................................................................................... 18
3.3.1. Constantes pr-definidas .............................................................................................. 18
3.3.2. Definindo constantes .................................................................................................... 18
3.4. Converso de varivel ......................................................................................................... 19
3.5. Exerccios Propostos ........................................................................................................... 20
Captulo 4. Operadores em PHP ..................................................................................................... 21
4.1. Operadores de strings .......................................................................................................... 21
4.2. Operadores Matemticos ..................................................................................................... 21
4.2.1. Aritmticos ................................................................................................................... 21
4.2.2. Atribuio..................................................................................................................... 22
4.2.3. Operadores de decremento e incremento ..................................................................... 23
4.3. Operadores relacionais ........................................................................................................ 23
4.4. Operadores lgicos ou booleanos ........................................................................................ 24
4.5. Precedncia de Operadores ................................................................................................. 26
Captulo 5. Interaes PHP com HTML ......................................................................................... 29
5.1. Formulrios ......................................................................................................................... 29
Elementos de um formulrio. ..................................................................................................... 29
5.2. Exemplo de formulrio. ....................................................................................................... 30
5.3. Mtodos Post e Get.............................................................................................................. 32
5.3.1. Mtodo Get .................................................................................................................. 33
Recebendo dados via mtodo GET ............................................................................................ 33
5.3.2. Mtodo Post ................................................................................................................. 34
Captulo 6. Estruturas de Controle e Repetio .............................................................................. 36
6.1. Blocos de controle ............................................................................................................... 36
6.2. If e else ................................................................................................................................ 37
6.3. Atribuio condicional (ternrio) ........................................................................................ 38
6.4. Switch .................................................................................................................................. 39

Desenvolvimento WEB III

6.4.1. Switch com break ......................................................................................................... 39


6.5. While ................................................................................................................................... 41
6.6. Do...while ............................................................................................................................ 42
6.7. For ....................................................................................................................................... 42
6.8. Foreach ................................................................................................................................ 44
6.9. Break ................................................................................................................................... 44
6.10.
Continue........................................................................................................................... 45
6.11.
Exerccios Propostos ........................................................................................................ 48
Captulo 7. Manipulao de Arrays ................................................................................................ 50
7.1. Criando um Array................................................................................................................ 50
7.2. Arrays Associativos. ............................................................................................................ 50
7.3. Interaes............................................................................................................................. 52
7.4. Acessando um Array ........................................................................................................... 52
7.5. Alterando um Array............................................................................................................. 53
7.6. Arrays multidimensionais.................................................................................................... 54
7.7. Funes com Arrays ............................................................................................................ 56
7.8. Exerccios Propostos ........................................................................................................... 59
Captulo 8. Manipulao de Funes .............................................................................................. 61
8.1. Declarando uma Funo. ..................................................................................................... 61
8.2. Escopo de Variveis em Funes ........................................................................................ 62
8.3. Passagem de Parmetro. ...................................................................................................... 62
8.4. Valor de Retorno .................................................................................................................. 63
8.5. Recurso. ............................................................................................................................. 64
8.6. Exerccios Propostos ........................................................................................................... 65
Captulo 9. Manipulao de arquivos e diretrios .......................................................................... 67
9.1. Criando e Abrindo um Arquivo. .......................................................................................... 67
9.2. Gravando em um arquivo. ................................................................................................... 68
9.3. Fechando um arquivo. ......................................................................................................... 68
9.4. Lendo um arquivo. .............................................................................................................. 69
9.5. Copiando, renomeando e Apagando um Arquivo ............................................................... 69
9.6. Manipulando Diretrio. ....................................................................................................... 70
9.7. Interaes com o Browser ................................................................................................... 71
9.8. Cookies ................................................................................................................................ 72
Acessando um cookie: ............................................................................................................... 74
9.9. Sesso .................................................................................................................................. 74
9.10.
Requisio de Arquivos ................................................................................................... 76
9.11.
Tratamentos de erro ......................................................................................................... 77
9.12.
Exerccios Propostos ........................................................................................................ 78
Captulo 10. UML ............................................................................................................................. 80
10.1.
Introduo ........................................................................................................................ 80
10.1.1.
Instalando UML Netbeans ........................................................................................ 80
10.2.
Tipos de Diagramas ......................................................................................................... 80
10.2.1.
Diagrama de Atividade ............................................................................................. 80
10.2.2.
Diagrama de Sequncia ............................................................................................ 80
10.2.3.
Diagrama de Caso de Uso ........................................................................................ 80
10.2.4.
Diagrama de Classe .................................................................................................. 80
10.3.
Abrindo o Projeto ............................................................................................................ 81
Captulo 11. POO com PHP ............................................................................................................. 83
11.1.
Introduo ........................................................................................................................ 83
11.2.
Classe, Atributos e Mtodos ............................................................................................ 84
11.3.
Criando estrutura de Classe pelo Diagrama..................................................................... 85
11.4.
Construindo uma classe em PHP. .................................................................................... 85
11.5.
Encapsulamento ............................................................................................................... 87
11.6.
Mtodo de armazenamento de Atributos(Set) ................................................................. 87
11.7.
Mtodo de Retorno de Atributos(Get) ............................................................................. 88

Desenvolvimento WEB III

11.8.
Estanciando a classe criada. ............................................................................................. 88
11.9.
Variveis Estticas ........................................................................................................... 89
11.10. Mtodos Estticos ............................................................................................................ 90
11.11. Exerccios Propostos:....................................................................................................... 91
Captulo 12. Mtodos Mgicos ......................................................................................................... 92
12.1.
Introduo ........................................................................................................................ 92
12.2.
__construct ....................................................................................................................... 92
12.3.
__destruct ......................................................................................................................... 92
12.4.
__toString ........................................................................................................................ 93
12.5.
__invoke .......................................................................................................................... 93
Captulo 13. Herana ........................................................................................................................ 94
13.1.
Introduo ........................................................................................................................ 94
13.2.
Herana (extends) ............................................................................................................ 94
Bibliografia ...................................................................................................................................... 97

Desenvolvimento WEB III

Aluno (a),
Seja bem-vindo (a)!
Esta apostila foi criada para ser utilizada na aprendizagem em lgica voltada para programao WEB
usando a linguagem PHP, com o intuito de enriquecer cada vez mais aqueles que busca o conhecimento
profissional ou at mesmo pessoal, apresento um material de linguagens simples e didtica, onde abordaremos
cada tpico passo a passo.
O material foi dividido em 16 captulos, desde lgica de programao, princpios bsicos at os conceitos
mais avanado dentro de um contexto lgico como Orientao a Objetos, levando ao estudante, uma base
inicial para programao WEB ou em outras linguagens. Esperamos que esse material seja um contribuinte
para todos aquele que querem aprender de forma dedicada, e que principalmente tenha um significado
importante para inicializao de uma formao do leitor.

PHP

Captulo 1. PHP
Objetivos
Apresentar basicamente alguns tipos de dados a ser implementados e adotados; Mostrar sua
importncia; Diferenciar varivel e constante; Apresentar comados e processo de entrada.

1.1. O que PHP


PHP significa: Hypertext Preprocessor. O produto foi originalmente chamado de Personal Home Page Tools,
mas como se expandiu em escopo um nome novo e mais apropriado foi escolhido por votao da comunidade. Voc pode
utilizar qualquer extenso que desejar para designar um arquivo PHP, mas os recomendados foram *.php. O PHP est
atualmente na verso 7.0.0, chamado de PHP7 ou, simplesmente de PHP. A nvel de estudo, utilizaremos o PHP 5.3.2,
pois uma verso mais estvel e muito utilizada no mercado.

PHP uma linguagem de criao de scripts embutida em HTML no servidor. Os produtos patenteados nesse
nicho do mercado so as Active Server Pages(ASP) da Microsoft, o Coldfusion da Allaire e as Java Server Pages da antiga
Sun que foi comprada pela Oracle. PHP , s vezes, chamado de o ASP de cdigo-fonte aberto porque sua
funcionalidade to semelhante ao produto/conceito, ou o que quer que seja, da Microsoft.
Exploraremos a criao de script no servidor, mais profundamente, nos prximos captulos, mas, no momento,
voc pode pensar no PHP como uma coleo de supertags de HTML que permitem adicionar funes do servidor s
suas pginas da Web. Por exemplo, voc pode utilizar PHP para montar instantaneamente uma complexa pgina da Web
ou desencadear um programa que automaticamente execute o dbito no carto de crdito quando um cliente realizar uma
compra. Observe uma representao de como PHP e HTML se comportam:

O PHP tem pouca relao com layout, eventos ou qualquer coisa relacionada aparncia de uma pgina da Web.
De fato, a maior parte do que o PHP realiza invisvel para o usurio final. Algum visualizando uma pgina de PHP no
ser capaz de dizer que no foi escrita em HTML, porque o resultado final do PHP HTML.
O PHP um mdulo oficial do servidor http Apache, o lder do mercado de servidores Web livres que constitui
aproximadamente 55 por cento da World Wide Web. Isso significa que o mecanismo de script do PHP pode ser construdo
no prprio servidor Web, tornando a manipulao de dados mais rpida. Assim como o servidor Apache, o PHP
compatvel com vrias plataformas, o que significa que ele executa em seu formato original em vrias verses do UNIX
e do Windows. Todos os projetos da Apache Software Foundation incluindo o PHP so software de cdigo-fonte
Projeto e-Jovem - Mdulo II

PHP

aberto.

1.1.1. Um pouco da Histria do PHP.


Rasmus Lerdorf, engenheiro de software, membro da equipe Apache o criador e a fora motriz original por trs
do PHP. A primeira parte do PHP foi desenvolvida para utilizao pessoal no final de 1994. Tratava-se de um wrapper de
PerlCGI que o auxiliava a monitorar as pessoas que acessavam o seu site pessoal. No ano seguinte, ele montou um pacote
chamado de Personal Home Page Tools (tambm conhecido como PHP Construction Kit) em resposta demanda de
usurios que por acaso ou por relatos falados depararam-se com o seu trabalho. A verso 2 foi logo lanada sob o ttulo
de PHP/FI e inclua o Form Interpreter, uma ferramenta para analisar sintaticamente consultas de SQL.
Em meados de 1997, o PHP estava sendo utilizado mundialmente em
aproximadamente 50.000 sites. Obviamente estava se tornando muito grande para uma
nica pessoa administrar, mesmo para algum concentrado e cheio de energia como
Rasmus. Agora uma pequena equipe central de desenvolvimento mantinha o projeto sobre
o modelo de junta benevolente do cdigo-fonte aberto, com contribuies de
desenvolvedores e usurios em todo o mundo. Zeev Suraski e Andi Gutmans, dois
programadores israelenses que desenvolveram os analisadores de sintaxe PHP3 e PHP4,
tambm generalizaram e estenderam seus trabalhos sob a rubrica de Zend.com (Zeev,
Andi, Zend).
O quarto trimestre de 1998 iniciou um perodo de crescimento explosivo para o
PHP, quando todas as tecnologias de cdigo-fonte aberto ganharam uma publicidade
intensa. Em outubro de 1998, de acordo com a melhor suposio, mais de 100.000
domnios nicos utilizavam PHP de alguma maneira. Um ano depois, o PHP quebrou a
marca de um milho de domnios.

1.2. Instalao do Servidor PHP


As requisies so feita de forma cliente servidor, onde um determinado cliente faz uma requisio a um servidor,
ele por sua vez recebe a requisio e faz todo o processo em diferentes camadas, retornando somente o que o cliente
(browser) solicitou.
Existe uma aplicao chamada de LAMP (Linux, Apache, MYSQL, PHP) voltada para sistemas operacionais
Linux, como tambm WAMP (Windows, Apache, MYSQL, PHP) voltada para sistemas operacionais Windows. Eles
proporcionam uma simples configurao desses recursos e tambm muito indicado para ambiente de estudo PHP. Porm
no iremos trabalhar com a instalao do LAMP. Pretendemos futuramente trabalhar com frameWorks, ento o mais
indicado ser realizar a instalao e configurao manualmente. Iremos explicar um passo a passo de todo o processo de
instalao e configurao desses recursos no tpico seguinte.

1.2.1. Instalao Apache.


O apache um dos principais aplicativos para o funcionamento de programas web feito em PHP, ele um dos
responsveis por compartilhar o nosso site dinmico para outras outras mquinas, existe duas grandes verses, o apache
2.x e o Apache 1.3, que apesar de antigo ainda muito utilizado em servidores. O Apache 2 trouxe muitas vantagens,
sobretudo do ponto de vista do desempenho alm de oferecer novos mdulos e mais opes de segurana. Mas sua adoo
foi retardada nos primeiros anos por um detalhe muito simples: o fato de ele ser incompatvel com os mdulos compilados
para o Apache 1.3. Como os mdulos so a alma do servidor web, muitos administradores ficavam amarrados ao Apache
1.3 devido falta de disponibilidade de alguns mdulos especficos para o Apache 2.
Iremos trabalhar com o Apache2 em sua verso para Linux, o procedimento de instalao simples pois
precisamos apenas de uma conexo com a internet e alguns comandos, outra forma de instalao e baixando o mesmo no
site: http://httpd.apache.org/ e instalando de forma manual.
Antes de comear qualquer instalao, certifique-se que no existe nenhum pacote corrompido no sistema ou
pacotes como LAMPP, XAMPP instalados.
Para instalar o Apache precisamos abrir o terminal e atualizar o nosso repositrio do Linux:( lembrando que voc
precisa ser administrador para atualizar a verso)

#sudo -s
#apt-get update
Com os pacotes bsicos atualizados podemos instalar o apache:

#apt-get install apache2


Caso, a instalao apresente algum erro, devido a algum pacote corrompido, utilize o comando abaixo para forar
a instalao:

#ptitude install apache2


Projeto e-Jovem - Mdulo II

PHP

Espere at a concluso de toda instalao. Por padro o apache automaticamente inicializa, podendo ser utilizado
aps isso. Digite no http://127.0.0.1/ ou http://localhost/ no browser, dever aparecer a seguinte tela:

Isto mostra que o apache est funcionando corretamente. Trata-se de um texto dentro de um arquivo HTML que
vem como padro dentro da pasta /var/www/ , essa a pasta principal do apache, onde trabalharemos com os arquivos
PHP.
O apache pode ser configurado de forma que podemos acessar mais de uma pgina com ip's ou portas diferentes,
ou seja podemos ter www1,www2 em uma mesma mquina servidora fazendo acesso por endereos como
http://localhost:8060 ou http://localhost:82, entre outros. Mas trabalharemos apenas com a configurao padro do
apache, uma vez que existe muito contedo a respeito desse assunto na internet. Para obter mais informaes consulte a
documentao do site oficial do apache: http://httpd.apache.org/docs/2.2/

1.2.2. Instalao Php5.


Para o funcionamento dos programas em PHP precisamos de algumas dependncias, onde funcionalidades,
funes, classes e suporte a XML ento embutidas. Por exemplo, se voc quiser utilizar orientao a objeto ou
simplesmente fazer uma conexo com o banco de dados, necessrio tambm a instalao do PHP5, onde algumas
bibliotecas sero instaladas para dar suporte aos programas em PHP.
Aps instalar o apache, faremos a instalao do PHP5 e algumas bibliotecas bsicas com o seguinte comando:

#apt-get install php5 libapache2-mod-php5 php5-gd curl php5-curl php5-xmlrpc php5-ldap php5odbc
Atualizaremos o Ubuntu com alguns pacotes de servio para servidor com o seguinte comando :

#apt-get install openssh-server unattended-upgrades


E por fim iremos reiniciar o servio Apache:

#/etc/init.d/apache2 restart
Aps a concluso da instalao, podemos testar criando um arquivo dentro da pasta var/www.
Entre na pasta principal:

$ cd /var/www
Renomeie o arquivo index.html para outro nome:

#mv index.html nome.html


Qualquer arquivo com o nome index.html dentro da pasta www ser o primeiro arquivo a ser executado.
Lembrando que pode existir somente um arquivo index.html na pasta. Aps renomear criaremos um novo arquivo.

#gedit index.php
Aps executar esse comando, digite o seguinte cdigo no editor de texto gedit:

Projeto e-Jovem - Mdulo II

PHP

10

Nesse momento estamos criando uma aplicao PHP que chama a funo phpinfo() que tem como finalidade
mostra informaes sobre configurao do PHP. Lembre-se que toda operao em PHP estar dentro da Tag especial
chamada: <?php
?>
Abra o browser e digite http://localhost/, se tudo estiver correto, observaremos seguinte tela:

1.3. Caractersticas de um programa PHP.


Assim como qualquer linguagem de programao, o PHP tem algumas caractersticas importantes, ao criamos
um arquivo PHP podemos usar a seguinte extenso:
*.php Arquivo PHP contendo um programa.
*.class.php Arquivo PHP contendo uma classe(veremos o conceito de classe mais adiante).
*.ini.php Arquivo PHP a ser includo, pode incluir constantes ou configuraes.
Outras extenses podem ser encontradas principalmente em programas antigos:
*.php3 Arquivo PHP contendo um programa PHP verso 3.
*.php4 Arquivo PHP contendo um programa PHP verso 4.
*.phtml Arquivo PHP contendo um programa PHP e HTML na mesma pgina.

1.3.1. Imprimindo algo no navegador WEB via PHP.


Usaremos comandos utilizados para gerar uma sada em tela (output). Se o programa PHP for executado via
servidor de pginas web (Apache ou IIS), a sada ser exibida na prpria pgina HTML gerada no Browser (navegador),
assim ser mostrado de acordo com o contedo existente na sada, por exemplo, se tivermos o seguinte: <h2> Hello
Word! <h2>, ser mostrado no navegador apenas a mensagem Hello Word! em um tamanho maior, pois trata-se de um
cdigo HTML dentro de comandos PHP.
Podemos ento usar os seguintes comandos para gerar comandos de sada: echo e print.

echo
um comando que imprime uma ou mais variveis ou textos, onde os mesmos so colocados em aspas simples
Projeto e-Jovem - Mdulo II

PHP

11

' ' ou duplas . Sintaxe:


echo 'a','b','c';

resultado:
abc
print
uma funo que imprime um texto na tela. Exemplo:

print( ' apostila de PHP ' );


resultado:
apostila de PHP
Observe um exemplo com o uso de echo e print:

Cdigo:

Sada no Browser:

1.3.2. Comentrios PHP


Usamos os comentrios para nos ajudar a lembrar de partes do cdigo ou para orientar outros programadores a
algoritmo que est sendo escrito.
Para comentar uma nica linha nos cdigos PHP podemos utilizar tanto o separador // como tambm #,
observe o exemplo abaixo:

Lembrando que os comentrios so trechos de cdigo que no so executados, onde eles servem somente para
quem tem acesso aos cdigos-fonte ou est ligado diretamente a programao desse cdigo. Podemos tambm comentar
muitas linhas, isso serve quando queremos que boa parte do cdigo no execute ou simplesmente colocar um comentrio
mais extenso. Tudo que ficar entre: /* e */ ser um comentrio, independentemente do nmero de linhas, observe o
exemplo abaixo:

ou

Projeto e-Jovem - Mdulo II

PHP

12

Captulo 2. Iniciando um Projeto com Netbeans.


Para facilitar nosso trabalho, escolhemos usar a IDE Netbeans. Acesse o endereo:
https://netbeans.org/downloads/ e baixe a verso atual da IDE para PHP. Lembrando que necessrio primeiramente
instalar o JDK para que o Netbeans possa ser instalado.
Com a IDE instalada devidamente, encontraremos o seguinte layout
:

Para criar um novo projeto, vamos em: Arquivo > Novo Projeto.
Escolhendo um projeto em PHP. Depois clicamos em Prximo:

Projeto e-Jovem - Mdulo II

PHP

13

Alteraremos o nome do Projeto para treinamento e certificar-se que ele estar dentro da pasta /var/www/.
Clique ao final em Finalizar.

Obs: Caso no tenha a pasta /var/www/, veja como est a instalao do servidor
APACHE na sua mquina. Lembrando que preciso da permisso na pasta, para que voc
possa salvar os arquivos

Na rea de Projetos a esquerda, ir aparecer um novo projeto em PHP, atravs dele, estudaremos todo o contedo
criando o nosso projeto do site.
No palco Principal, o Netbeans j faz por ns toda a criao bsica das estruturas HTML incluindo a TAG PHP
na pgina. Para testar que a nossa aplicao, vamos dar um velho e conhecido: Ol Mundo em PHP. Para nos
certificarmos que est tudo funcionando.
Veja o resultado no seu navegador: Acessando: http://localhost/treinamento/

Caso algo deu errado, veja novamente as configuraes do APACHE ou PHP.


Projeto e-Jovem - Mdulo II

PHP

14

2.1. Tipos Primitivos


Todo o trabalho realizado por um computador baseado na manipulao das informaes contidas em sua
memria. A grosso modo, de expressar estas informaes podem ser classificadas em dois tipos:
As instrues, que comandam o funcionamento da mquina e determinam a maneira como devem ser tratados os
dados. As instrues so especficas para cada modelo de computador, pois so funes do tipo particular de processador
utilizado em sua implementao. Os dados propriamente ditos, que correspondem a poro das informaes a serem
processadas pelo computador.

2.1.1. Tipos de Primitivos de Dados


Quaisquer dados a ser tratado na construo de um algoritmo devem pertencer a algum tipo, que ir determinar
o domnio de seu contedo. Os tipos mais comuns de dados so conhecidos como tipos primitivos, so eles: inteiro, real,
numrico, caractere e lgico. A classificao que ser apresentada no se aplica a nenhuma linguagem de programao
especfica, pelo contrrio, ela sintetiza os padres utilizados na maioria das linguagens.
Inteiro: Todo e qualquer dado numrico que pertena ao conjunto de nmeros inteiros relativos (negativo, nulo
ou positivo). Exemplos: {...-4, -3, -2, -1, 0, 1, 2, 3, 4 ,...}.
Real: Todo e qualquer dado numrico que pertena ao conjunto de nmeros reais (negativo, nulo ou positivo).
Exemplos: {15.34; 123.08; 0.005 -12.0; 510.20}.
Numrico: Trata-se de todo e qualquer nmero que pertena ao conjunto dos inteiros ou reais, tambm abrange
nmeros binrios, octal e hexadecimal.
Caracteres: so letras isoladas. Exemplo: {'a', 'd', 'A', 'h'}.
Dados literais: Conhecido tambm como Conjunto de caracteres ou String, todo e qualquer dado composto
por um conjunto de caracteres alfanumricos (nmeros, letras e caracteres especiais). Exemplos: {Aluno Aprovado,
10% de multa, Confirma a excluso ??, S, 99-3000-2, email,123nm,fd54fd}.
Lgico: A existncia deste tipo de dado , de certo modo, um reflexo da maneira como os computadores
funcionam. Muitas vezes, estes tipos de dados so chamados de booleanos, devido significativa contribuio de Boole
a rea da lgica matemtica. A todo e qualquer dado que s pode assumir duas situaes dados biestveis, algo como por
exemplo {0/ 1, verdadeiro/falso, sim/no, true/false}.

Veremos a seguir como esses valores sero armazenados e como o PHP ir interpret-los.

2.2. Exerccios Propostos

EP02.1: Como podemos definir PHP e qual a sua relao com HTML?
EP02.2: Descreva um exemplo estrutural relacionando tag's HTML e delimitaes PHP.
EP02.3: Quais aplicativos bsicos podemos instalar para criarmos um servidor de pginas em PHP?
EP02.4: Em relao ao apache, qual a sua principal finalidade?
EP02.5: Quais as principais extenses de arquivos PHP e diga a diferena entre elas?
EP02.6: Crie dois exemplos de cdigo PHP usando seus delimitadores.
EP02.7: Qual as finalidades de usar comentrios dentro de um cdigo-fonte?
EP02.8: Cite os principais comandos de sada usados em PHP.
EP02.9: Qual a diferena entre echo e print?
EP02.10: Observe o seguinte cdigo e diga qual o item correto:
<?php
//pgina web.
echo '<h1>Ol, essa sua primeira pgina!<h1>';
echo '<h2>Responda!</h2>' print 'O que PHP?';
print 'Qual sua finalidade?'; echo '<h4>Resposta: item a!</h4>';
?>
I - Esse cdigo pode ser interpretado pelo apache normalmente.
II - As tag's HTML so interpretadas pelo servidor.
III - Esse cdigo possui erros.
IV - As tag's so interpretada pelo navegador do cliente.
a) I, II, IV esto corretas.
b) somente a I est correta.
c) III, IV esto correta.
d) somente IV est correta.
e) I e IV esto corretas.
EP02.11: Crie um arquivo PHP dentro da pasta www com o nome index.php, aps isso pegue o cdigo anterior
e adicione a esse arquivo, defina quais textos so visualizadas em seu navegador. Caso exista erros, faa uma correo.
EP02.12: Crie dois arquivos diferentes, um com nome index.php, outro com o nome teste.php, aps isso inclua
o arquivo teste.php dentro do arquivo index.php, ambos arquivos devero ter no seu cdigo impresso mensagens
diferentes utilize o comando print.
Projeto e-Jovem - Mdulo II

15

Atribuies em PHP

Captulo 3. Atribuies em PHP


Objetivos
Mostrar a definio de variveis e os seus tipos; mostrar como pode-se atribuir um valor a ela, seu uso e
aplicao em PHP; Mostrar a definio de constantes e sua importncia.

3.1. Variveis
Variveis so identificadores criados para guardar valores por determinado tempo. Em PHP elas so declaradas
e inicializadas, porm so armazenadas na memria RAM do servidor web. Esse um dos motivos pelo qual os servidores
precisam de grandes quantidades de memria.
Imagine um servidor com mais de 20 mil acessos simultneos ao mesmo tempo, onde cada usurio est acessando
a mesma pgina feita em PHP. So criadas neste processo variveis diferentes para cada usurio, logo, isso faz com que
muitos processos sejam gerados e processados pelo servidor.
A tipagem em PHP dinmica, ou seja, as variveis no precisam ser obrigatoriamente inicializadas aps a
declarao. Uma varivel inicializada no momento em que feita a primeira atribuio. O tipo da varivel ser definido
de acordo com o valor atribudo. Esse um fator importante em PHP, pois uma mesma varivel pode ser de um mesmo
tipo ou no, e pode assumir no decorrer do cdigo um ou mais valores de tipos diferentes.
Para criar uma varivel em PHP, precisamos atribuir-lhe um nome de identificao, sempre procedido pelo
caractere cifro ($). Observe um exemplo:

Exemplo 1

Para imprimirmos as duas variveis usamos aspas duplas no comando echo, no exemplo anterior temos a seguinte
sada:

Ateno!
Obs.: Podem acontecer erros na exibio das mensagens por conta das codificaes de acentuao.
Caso isso acontea, mude a codificao do seu navegador ou utilize as metas de codificao.

Algumas dicas Importantes:


Nomes de variveis devem ser significativa e transmitir a ideia de seu contedo dentro do contexto no qual est
inserido.
Utilize preferencialmente palavras em minsculo (separadas pelo caracter _) ou somente as primeiras letras
em maisculo quando da ocorrncia de mais palavras.
Exemplo:
<?PHP
$codigo_cliente; //exemplo de varivel
$codigoCliente; //exemplo de varivel
?>
Nunca inicie a nomenclatura de variveis com nmeros. Ex: $1nota;
Nunca utilize espao em branco no meio do identificados da varivel. Ex: $nome um;
Nunca utilize caracteres especiais (! @ # ^ & * / | [ ] { } ) na nomenclatura das variveis.
Evite criar variveis com mais de 15 caracteres em virtude da clareza do cdigo-fonte.
Com exceo de nomes de classes e funes, o PHP case sensitive, ou seja, sensvel a letras maisculas e
minsculas. Tome cuidado ao declarar variveis. Por exemplo a varivel $codigo tratada de forma totalmente diferente
da varivel $Codigo.
Em alguns casos, precisamos ter em nosso cdigo-fonte nomes de variveis que podem mudar de acordo com
determinada situao. Neste caso, no s o contedo da varivel mutvel, mas tambm variante (variable variables).
Projeto e-Jovem - Mdulo II

16

Atribuies em PHP

Sempre que utilizarmos dois sinais de cifro ($) precedendo o nome de uma varivel, o PHP ir referenciar uma varivel
representada pelo contedo da primeira. Nesse exemplo, utilizamos esse recurso quando declaramos a varivel $nome
(contedo de $varivel) contendo 'maria'.

Exemplo 2

Resultado = maria.
Quando uma varivel atribuda a outra, sempre criada uma nova rea de armazenamento na memria. Veja
neste exemplo que, apesar de $b receber o mesmo contedo de $a, aps qualquer modificao em $b, $a continua com o
mesmo valor, veja:

Exemplo 3

Para criar referncia entre variveis, ou seja, duas variveis apontando para a mesma regio da memria, a
atribuio deve ser precedida pelo operador &. Assim, qualquer alterao em qualquer uma das variveis reflete na outra,
veja:

Exemplo 4

No exemplo anterior percebemos que tanto $a como $b apontam para a mesma referncia na memria, dessa
forma se atribuirmos um novo valor em $a ou em $b, esse valor ser gravado no mesmo endereo, fazendo com que,
ambas variveis possam resgatar o mesmo valor.

3.2. Tipos de Variveis


Algumas linguagens de programao tm suas variveis fortemente tipadas, diferentemente disso o PHP tem
uma grande flexibilidade na hora de operar com variveis. De fato, quando definimos uma varivel dando-lhe um valor,
o computador atribui-lhe um tipo. Isso permite que o programador no se preocupe muito na definio de tipos de
variveis, uma vez que isso feita de forma automtica. Porm deve ter cuidado com as atribuies de valores, evitando
erros na hora de iniciar uma varivel em PHP.

3.2.1. Tipo booleano.


Um booleano expressa um valor lgico que pode ser verdadeiro ou falso. Para especificar um valor booleano,
utilize a palavra-chave TRUE para verdadeiro ou FALSE para falso. No exemplo a seguir, declaramos uma varivel
booleana $exibir_nome, cujo contedo TRUE para verdadeiro. Em seguida, testamos o contedo dessa varivel para
verificar se ela realmente verdadeira imprimindo na tela caso seja. Usaremos a estrutura IF, uma estrutura de controle
que veremos com mais detalhes no capitulo 4, para testar a varivel. Observe:
Projeto e-Jovem - Mdulo II

17

Atribuies em PHP

Exemplo 5

Tambm podemos atribuir outros valores booleanos para representao de valores falso em operaes booleanas.
Inteiro 0 ;
Ponto flutuante 0.0 ;
Uma String vazia ou 0 ;
Um array vazio ;
Um objeto sem elementos ;
Tipo NULL .

3.2.2. Tipo inteiro


So os nmeros que pertencem ao conjunto dos nmeros inteiros, abrangendo valores negativos e positivos, tratase de valores decimais.

Exemplo 6

3.2.3. Tipo ponto flutuante:


Os nmeros de ponto flutuante (floats e doubles) so nmeros com casas decimais, onde a vrgula substituda
por um ponto. Exemplo:

Exemplo 7

3.2.4. Tipo numrico


Nmeros podem ser especificados em notao decimal (base 10), hexadecimal (base 16) ou octal (base 8),
opcionalmente precedido de sinal (- ou +), esse tipo abrange todos os valores abaixo:

Exemplo 8

No entraremos em detalhes em relao a converso desses valores, porm que fique claro a ideia de que uma
varivel numrica pode assumir diferentes tipos de valores.

Projeto e-Jovem - Mdulo II

18

Atribuies em PHP

3.2.5. Tipo String


Uma string uma cadeia de caracteres alfanumricos. Para declar-las podemos utilizar aspas simples ( ' ' ) ou
aspas duplas ( ). Exemplo:

Exemplo 9

Observe na tabela abaixo o que podemos tambm inserir em uma String:

Sintaxe

Significado

\n
\r
\t
\\
\$
\
\

Nova linha
Retorno de carro (semelhante a \n)
Tabulao horizontal
A prpria barra ( \ )
O smbolo $
Aspa simples
Aspa dupla

3.2.6. Tipo array


Array uma lista de valores armazenados na memria, os quais podem ser de tipos diferentes (nmeros, String,
objetos) e podem ser acessados a qualquer momento, pois cada valor relacionado a uma chave. Um array tambm pode
crescer dinamicamente com a adio de novos itens. Veja no captulo 6 como manipular esse tipo de estrutura.

3.2.7. Tipo objeto


Um objeto uma entidade com um determinado comportamento definido por seus mtodos (aes) e propriedade
(dados). Para criar um objeto deve-se utilizar o operador new. Para mais informaes sobre orientao a objeto, consulte
o site http://php.net e pesquise sobre object.

3.2.8. Tipo recurso


Recurso (resource) uma varivel especial que mantm uma referncia de recursos externos. Recursos so
criados e utilizado por funes especiais, como uma conexo ao banco de dados. Um exemplo a funo mysql_connect(),
que ao conectar-se ao banco de dados, retorna um varivel de referncia do tipo recurso. Exemplo:
Resource mysql_connect(...)
Outro exemplo:
mysql_fetch_row(...)

3.2.9. Tipo null


Quando atribumos um valor do tipo null (nulo) a uma varivel estamos determinando que a mesma no possui
valor, e que seu nico valor nulo. Exemplo:
$abc = null;

3.3. Constantes
3.3.1. Constantes pr-definidas
O PHP possui algumas constantes pr-definidas, indicando a verso do PHP, o Sistema Operacional do servidor,
o arquivo em execuo e diversas outras informaes. Para ter acesso a todas as constantes pr-definidas, pode-se utilizar
a funo phpinfo(), que exibe uma tabela contendo todas as constantes pr-definidas, assim como configuraes da
mquina, sistema operacional, servidor HTTP e verso do PHP instalada, como foi feito em exemplos anteriores.

3.3.2. Definindo constantes


Para definir constantes utiliza-se a funo define. Uma vez definido, o valor de uma constante no poder mais
ser alterado. Uma constante s pode conter valores escalares, ou seja, no pode conter nem um array nem um objeto. A
assinatura da funo define a seguinte:
define("NOME_DA_CONSTANTE","valor inaltervel");
Exemplo:
Projeto e-Jovem - Mdulo II

19

Atribuies em PHP

Exemplo 10

O nome de uma constante tem as mesmas regras de qualquer identificador no PHP. Um nome de constante
vlida comea com uma letra ou sublinhado, seguido por qualquer nmero de letras, nmeros ou sublinhados. Voc pode
definir uma constante utilizando-se da funo define(). Quando uma constante definida, ela no pode ser mais
modificada ou anulada.
Estas so as diferenas entre constantes e variveis:
Constantes podem ser definidas e acessadas de qualquer lugar sem que as regras de escopo de variveis sejam
aplicadas;
Constantes s podem conter valores escalares;
Constantes no podem ter um sinal de cifro ($) antes delas;
Constantes s podem ser definidas utilizando a funo define( ), e no por simples assimilao;
Constantes no podem ser redefinidas ou eliminadas depois que elas so criadas.

3.4. Converso de varivel


PHP utiliza checagem de tipos dinmica, ou seja, uma varivel pode conter valores de diferentes tipos em
diferentes momentos da execuo do script. Por este motivo no necessrio declarar o tipo de uma varivel para us-la.
O interpretador PHP decidir qual o tipo daquela varivel, verificando o contedo em tempo de execuo.
Ainda assim, permitido converter os valores de um tipo para outro desejado, utilizando o typecasting ou a
funo settype (ver adiante).
Assim podemos definir novos valores para terminadas variveis:

typecasting

Descrio

(int),(integer)

Converte em inteiro.

(real),(float),(double)

Converte em ponto flutuante.

(string)

Converte em string.

(object)

Converte em objeto.

Convertendo de ponto flutuante para inteiro.

Exemplo 11

Convertendo de String para Object.

Exemplo 12

Convertendo de inteiro para ponto flutuante.

Exemplo 13

Projeto e-Jovem - Mdulo II

20

Atribuies em PHP

O resultado poderia ser 542.0, mas lembrando que o interpretador do PHP faz outra converso ao notar que o
nmero 542.0 tem a mesma atribuio de 542. O resultado seria o mesmo se tentarmos atribuir $a = 542.0.

3.5. Exerccios Propostos

EP03.1: Qual a principal finalidade de uma varivel?


EP03.2: O que significa tipagem automtica.
EP03.3: Cite algumas dicas importantes na nomenclatura de variveis:
EP03.4: Das variveis abaixo, quais possuem nomenclaturas vlidas.
$a___b;
$a_1_;
$_incio;
$@nome;
$val_!;
$--nome;
$a_|_;
$#valor;
$palavra;
$tele#;
$123;
$__=__;
$VALOR_MAIOR;
$____;
$all;
Resposta: __________________________________________________________________________
EP03.5: Crie dez variveis atribuindo valores diversos, logo aps use o comando echo pra imprimir na tela do
browser, exemplo:
<?php
$nome = Maria Cavalcante;
echo $nome;
....
?>
EP03.6: Quais os tipos de variveis que podemos citar em PHP.
EP03.7: Como podemos distinguir um tipo de varivel de outro, uma vez que a tipagem feita de forma
automtica em PHP.
EP03.8: Faa a ligao com os seguintes tipos:
1 - $var = -10;
( )ponto flutuante.
2 - $var = palavra;
( )tipo null.
3 - $var = 10.22;
( )tipo objeto.
4 - $var = true;
( )String.
5 - $var = null;
( )numrico.
6 - $var = new abc;
( )booleano.
EP03.9: Qual a principal finalidade de um constante e como elas so definidas em PHP.
EP03.10: Em que momentos precisamos converter uma varivel de um tipo em outro.
EP03.11: Quais os typecasting usados em PHP.
EP03.12: Crie uma constante com o comando define e imprima com o comando print();
EP03.13: Crie converses e imprima na tela com o comando print() com as seguintes varivel.
$var1 = paraleleppedo, $var2 = 15.20, $var3 = 10.
a) Converta a varivel $var1 em objeto.
b) Converta a varivel $var3 em ponto flutuante.
c) Converta a varivel $var2 em inteiro.

ANOTAES

Projeto e-Jovem - Mdulo II

PHP Operadores em PHP

21

Captulo 4. Operadores em PHP


Objetivos
Demostrar os tipos e quais os operadores; Falar do conceito de atribuio e concatenao de strings;
exemplificar os operadores, sua importncia e funcionamento.
Os operadores tm seu papel importante dentro de qualquer linguagem de programao. atravs deles que
podemos realizar diversos operaes dentro de um programa, seja ela de atribuio, aritmtica, relacional, lgico, dentre
outros. Em PHP no diferente, os operadores so utilizados constantemente, porm existem algumas regras que veremos
mais adiante.

4.1. Operadores de strings


So operadores utilizados para unir o contedo de uma string a outra, com isso podemos dizer que h dois
operadores de string. O primeiro o operador de concatenao ('.') que j utilizamos em exemplos anteriores, ele retorna
a concatenao dos seus argumentos direito e esquerdo. O segundo o operador de atribuio de concatenao ('.='), que
acrescenta o argumento do lado direito no argumento do lado esquerdo.
Observe o exemplo abaixo:

Exemplo 14

Nesse exemplo pode-se observar a declarao da varivel $d, logo aps temos uma inicializao e atribuio de
concatenao em uma mesma linha, isso possvel em PHP, deixando o cdigo mais otimizado, porm menos legvel.

4.2. Operadores Matemticos


4.2.1. Aritmticos
Chamamos de operadores aritmticos o conjunto de smbolos que representa as operaes bsicas da
matemtica.

Operaes

Operadores

Exemplo
+ 5

Resposta

Adio

Subtrao

20 - 5

15

Multiplicao

56

Diviso

15 / 3

Mdulo (Resto da diviso)

10 % 3

Negao (Numero Posto)

- (valor)

Se for 15 a atribuio

-15

* 8

Veja:

Exemplo 15

Nesse exemplo fizemos algumas operaes, porm ao utilizar parnteses, estamos determinando quem executa
primeiro, no caso a soma de $b+5.

Projeto e-Jovem - Mdulo II

PHP Operadores em PHP

22

4.2.2. Atribuio
O operador bsico de atribuio "=" (igual). Com ele podemos atribuir valores as variveis como foi visto em
exemplos anteriores. Isto quer dizer que o operando da esquerda recebe o valor da expresso da direita (ou seja, "
configurado para"). Mas podemos usar algumas tcnicas, observe o exemplo abaixo:

Exemplo 16

Alm do operador bsico de atribuio, h "operadores combinados" usados para array e string, eles permitem
pegar um valor de uma expresso e ento usar seu prprio valor para o resultado daquela expresso.
Por exemplo:

Exemplo 17

Observe a expresso: $w = 3 e logo aps $w+=5. Isto significa a mesma coisa de $w = $w + 5, ou, $w= 3 +5. A
ideia pode ser usada para string, como foi feito com a varivel $b, onde $b = Bom, logo aps usamos ponto(.) e igual
(=) para concatenar os valores, ficando assim: $b.=Dia!. Lembrando que isso significa a mesma coisa que $b = $b.Dia.
Observe mais um exemplo:

Exemplo 18

Podemos definir uma sequncia com duas concatenaes, onde $f = Dia.turma e logo aps temos $j =
Bom.Dia turma.
Os operadores de atribuio so usados para economizar linhas de cdigo, deixando assim o cdigo mais
funcional e otimizado. A tabela abaixo mostra os principais operadores de atribuio:

Operadores

Descrio

Atribuio simples.

+=

Soma, depois atribui.

-=

Subtrai, depois atribui.

*=

Multiplica, depois atribui.

/=

Divide, depois atribui.

%=
.=

Modulo(resto) da diviso, depois atribui.


Concatena, depois atribui.

Exemplo:
Observe mais um exemplo aplicando os demais operadores.

Projeto e-Jovem - Mdulo II

PHP Operadores em PHP

23

Exemplo 19

Exemplo 20

Vale ressaltar que a cada echo, o valor de $a sofre modificaes. Isso devido a atribuio feita aps a operao.
Usamos o operador ponto(.) para concatenar os valores obtidos com <br> cdigo usado em HTML para quebra de linha.

4.2.3. Operadores de decremento e incremento


So operadores usados para atribuir em 1 ou -1 a varivel, isso pode ser feito antes ou depois da execuo de
determinada varivel. A tabela abaixo mostra tais operadores:

Operadores

Descrio

++$a

Pr-incremento. Incrementa $a em um e, ento, retorna $a.

$a++

Ps-incremento. Retorna $a, ento, incrementa $a em um.

- -$a

Pr-decremento. Decrementa $a em um e, ento, retorna $a.

$a- -

Ps-decremento. Retorna $a, ento, decrementa $a em um.

Exemplo:

Exemplo 21

Nesse exemplo temos uma forma aplicada do uso de decremento e incremento, lembrando que a varivel $a pode
ter qualquer nome. Tambm podemos fazer um comparativo com o Pr-incremento ou incremento-prefixado com
operaes que j conhecemos, observe:

Operador

Forma extensa.

Forma simplificada

++$a

$a = $a + 1

$a+=1

- -$a

$a = $a - 1

$a -=1

4.3. Operadores relacionais


Os operadores relacionais ou conhecidos tambm como operadores de comparao, so utilizados para fazer
determinadas comparaes entre valores ou expresses, resultando sempre um valor booleano verdadeiro ou falso (TRUE
ou FALSE). Para utilizarmos esses operadores usamos a seguinte sintaxe:
(valore ou expresso ) + ( comparador) + ( segundo valor ou expresso )
Observe a tabela abaixo:
Projeto e-Jovem - Mdulo II

PHP Operadores em PHP


Comparadores
==
===
!= ou <>

24

Descrio
Igual. Resulta em TRUE se as expresses forem iguais.
Idntico. Resulta em TRUE se as iguais e do mesmo tipo de dados.
Diferente. Resulta verdadeiro se as variveis foram diferentes.

<

Menor ou menor que. Resulta TRUE se a primeira expresso for menor.

>

Maior ou maior que. Resulta TRUE se a primeira expresso for maior.

<=

Menor ou igual. Resulta TRUE se a primeira expresso for menor ou igual.

>=

Maior ou igual. Resulta TRUE se a primeira expresso for maior ou igual.

Veja um exemplo prtico:


$a <= $b
Compara se $a menor ou igual a $b, onde, retorna verdadeiro (TRUE), caso contrrio retorna falso (FALSE).
Para testarmos essas comparaes podemos utilizar o condicional ?: (ou ternrio), sua sintaxe a seguinte:
(expresso booleana) ? (executa caso verdadeiro) : (executa caso falso);
Agora podemos ver um exemplo envolvendo as sintaxes e empregabilidade dos comparadores:

Exemplo 22

Nesse exemplo declaramos e iniciamos trs variveis. Usamos ento o comando echo para imprimir o resultado,
onde o condicional ?: foi utilizado. Iniciamos as comparaes de $a, $b e $c, caso a comparao individual retorne
TRUE, imprime verdadeiro, caso retorne FALSE, imprime falso. Observe que o comparador === compara o valor e o
tipo, retornando FALSE por $b se tratar de um tipo inteiro, e $c um tipo ponto flutuante, j o comparador == compara
somente os valores onde 45 igual a 45.0 retornando verdadeiro. Tambm podemos usar o operador !== onde tem a
funo semelhantemente ao operador != , mas retorna TRUE se os tipos forem diferentes. Se a varivel for do tipo
booleano, podemos compar-los assim:
$a == TRUE, $a == FALSE

4.4. Operadores lgicos ou booleanos


So utilizados para avaliar expresses lgicas. Estes operadores servem para avaliar expresses que resultam em
valores lgico sendo verdadeiro ou falso:

AND

OU

OR

No

NOT

Esses operadores tem a finalidade de novas proposies lgicas composta a partir de outras proposies lgicas
simples. Observe:

Operador

Funo

no

negao

conjuno

ou

disjuno

Com isso podemos construir a Tabela verdade onde trabalhamos com todas as possibilidades combinatria entre
os valores de diversas variveis envolvidas, as quais se encontram em apenas duas situaes (V e F), e um conjunto de
operadores lgicos. Veja o comportamento dessas variveis:

Projeto e-Jovem - Mdulo II

PHP Operadores em PHP

25

Operao de Negao:
A

(not) no A

Trazendo para o nosso cotidiano:


Considerando que A = Est chovendo, sua negao seria : No est chovendo.
Considerando que A = No est chovendo sua negao seria : Est chovendo
Operao de conjuno:
A

Ae B

Trazendo para o nosso cotidiano:


Imagine que acontecer um casamento:
Considerando que A = Noivo presente e B = Noiva presente.
Sabemos que um casamento s pode se realizar, se os 2 estejam presente.
Operao de disjuno no exclusiva:
A

A ou B

Trazendo para o nosso cotidiano:


Imagine que acontecer uma prova e para realiz-la voc precisar da sua Identidade ou ttulo de eleitor no
dia da prova.
Considerando que A = Identidade e B = Ttulo de eleitor.
Sabemos que o candidato precisa de pelo menos 1 dos documentos para realizar a prova.
So chamados de operadores lgicos ou booleanos por se tratar de comparadores de duas ou mais expresses
lgicas entre si, fazendo agrupamento de testes condicionais e tem como retorno um resultado booleano.
Na tabela abaixo temos os operadores e suas descries:

Operador

Descrio

( $a and $b )

E : Verdadeiro se tanto $a quanto $b forem verdadeiros.

( $a or $b )

OU : Verdadeiro se $a ou $b forem verdadeiros.

( $a xor $b )

XOR : Verdadeiro se $a ou $b forem verdadeiro, de forma exclusiva.

( ! $a )
($a && $b)
($a || $b)

NOT : Verdadeiro se $a for falso, usado para inverter o resultado da condio.


E : Verdadeiro se tanto $a quando $b forem verdadeiros.
OU : Verdadeiro se $a ou $b forem verdadeiros.

Dicas: or e and tem procedncia maior que && ou ||, ou seja, em uma comparao extensa, onde
ambos esto aplicados. Eles tm prioridade de executar sua comparao primeiro.

Projeto e-Jovem - Mdulo II

PHP Operadores em PHP

26

No prximo exemplo usamos os operadores lgicos que tem procedncia maior:

Exemplo 23

Em outro exemplo temos os operadores lgicos mais comuns:

Exemplo 24

Tambm podemos atribuir valores as variveis usando os operadores lgicos:


O primeiro echo mostra 2 e 0, pois no atribui valor a $b uma vez que a primeira condio j satisfatria.
O segundo echo mostra 5 e 3, pois tanto a primeira quanto a segunda precisam ser executadas.

Exemplo 25

4.5. Precedncia de Operadores


Agora j conhecemos uma boa quantidade de operadores no PHP, falta agora conhecer a precedncia de cada um
deles, ou seja, quem mais importante, qual operador avaliado primeiro e qual avaliado em seguida. Observe o
seguinte exemplo:

Exemplo 26

O resultado ser 17, pois o operador * tem maior precedncia em relao ao operador +. Primeiro ocorre a
multiplicao 2*6, resultando em 12, em seguida a soma de 5 + 12. Caso desejar realizar a operao com o operador +
para s em seguida realizar a operao com o operador *, temos que fazer conforme o exemplo abaixo:

Exemplo 27

Observe que utilizamos os parnteses para determinarmos quem deve ser executado primeiro, assim alterando o
resultado para 42. Os parnteses determinam qual bloco de cdigo executa primeiro, e tambm serve para isolar
determinadas operaes. Veja mais um exemplo onde as operaes so feitas separadamente. Primeiro executa a soma,
em seguida a subtrao e s ento executado a multiplicao, imprimindo um resultado fina 21:
Exemplo:

Projeto e-Jovem - Mdulo II

PHP Operadores em PHP

27

Exemplo 28

A tabela seguinte mostra a precedncia dos operadores, da maior precedncia no comeo para os de menor
precedncia.

Operador
-

>

Descrio
++

--

<
==

Negativo, negao, incremento e decremento


Multiplicao, diviso e resto da diviso
Adio, subtrao e concatenao

>= <=

Maior que, menor que, maior ou igual e menor ou igual

!=

Igual e diferente

<>

&&
||

E
OU

= += -= *= /= %=

Operadores de atribuio

AND

E com menor prioridade

XOR

Ou exclusivo

OR

Ou com menor prioridade

importante lembrar que primeiro o PHP executar todas as operaes que estiverem entre parnteses, se dentro
dos parnteses houver diversas operaes, a precedncia dos operadores ser utilizada para definir a ordem. Aps resolver
todas as operaes dos parentes, o PHP volta a resolver o que esta fora dos parnteses baseando-se na tabela de
precedncia de operadores. Havendo operadores de mesma prioridade o PHP resolver a operao da esquerda para
direita.
Tambm podemos trabalhar com procedncia de parnteses, fazendo associaes com um ou mais operadores,
observe o seguinte exemplo:

Exemplo 29

Seguindo a ordem de procedncia temos:


(5) * (6) / (16 - ((7)*2)) >>> 5 * 6 / (16 - (14)) >>> 5 * 6 / 2 >>> 30 / 2
Resultado : 15
Observe que primeiro executa todos os parnteses, e s ento temos as procedncias das demais operaes.
Exerccios Propostos
EP04.1: Qual a finalidade dos operadores de strings?
EP04.2: Quais os operadores de decremento e incremento? Cite alguns exemplos:
EP04.3: Qual a finalidade do operador aritmtico %(modulo)?
EP04.4: Cite os operadores relacionais, mostre alguns exemplos.
EP04.5: Quais operadores lgicos ou booleanos?
EP04.6: Quais os operadores de atribuio?
EP04.7: Qual a sintaxe do uso de ternrio e cite um exemplo?
EP04.8: Quais os operadores utilizados e o resultado final do cdigo abaixo:
<?php
$a =10;
$b = 12.5;
$c = $a+$b;
print($a>$b? verdadeiro : falso);
print($c>=$b? verdadeiro : falso);
?>
EP05.9:Observe o cdigo abaixo e diga quais das operaes so executadas primeiro, coloque a resposta em
ordem decrescente.
$a = 8*5-3+4/2+19%5/2+1;
EP05.10:Faa testes com os operadores relacionais substituindo o operados > do cdigo-fonte abaixo.
<?php
$var1 = 2.2564;
Projeto e-Jovem - Mdulo II

PHP Operadores em PHP

28

$var2 = 2.2635;
print($var1 > $var2 ? sim : no);
?>
EP05.11:Usando o operador de String . para montar a seguinte frase abaixo:
<?php
$a = de;
$b = um;
$c = comunicao;
$c = a;
$d = internet;
$e = meio;
print( ..... );
?>
EP05.12:Observe o cdigo-fonte abaixo e diga qual o resultado booleano final. Justifique sua resposta.
<?
$a = 12.0 < 11.2;
$b = 10*2-3 > 19%3+10;
$c = 10;
print( ($a || $c = 10 && $b) ? "true" : "false");
?>

ANOTAES

Projeto e-Jovem - Mdulo II

PHP Interae PHP com HTML

29

Captulo 5. Interaes PHP com HTML


Objetivos
Apresentar ao aluno como trabalhar com interaes PHP dentro do cdigo HTML; mostrar exemplos de
formulrio, o uso de mtodos POST e GET, cookies, listagem, seo e suas interaes com o Browser.
Abordaremos neste captulo algumas formas de interaes utilizando a linguagem de programao PHP e a
linguagem de marcao HTML. Alm disso, mostraremos alguns componentes mais utilizados para a construo de um
sistema ou uma pgina web, e de que forma o PHP pode receber, processar, e enviar essa informao.
Utilizamos linguagens para exibir os dados da aplicao, seja ela para simples conferncia, em relatrio ou ainda
possibilitando a adio e excluso de registros. Criaremos a princpio formulrios e listagem.

5.1. Formulrios
Podemos definir formulrio como um conjunto de campos disponveis ao usurio de forma agrupada para serem
preenchidos com informaes requisitada pela aplicao (sistemas web ou pginas). Um formulrio composto por vrios
componentes, alm de possuir botes de ao, no qual define o programa que processar os dados.
Em uma aplicao determinamos ento a entrada de dados (no caso os formulrios), e a sada de dados, que
toda e qualquer informao apresentada ao usurio pelo browser, de forma que ambas tenham uma ligao lgica e possa
retornar um resultado onde todos os componentes da aplicao trabalhem de forma coerente.

Elementos de um formulrio.
Para criarmos um formulrio, utilizamos a tag <form> e dentro dela podemos dispor diversos elementos, onde,
cada um deles representa uma propriedade em particular. A seguir explicaremos os principais componentes de um
formulrio.

Criando um formulrio:
Todo formulrio deve conter no mnimo as seguintes caractersticas, observe:

name Nome atribudo ao formulrio para sua identificao.


method Mtodo POST ou GET como veremos mais adiante.
action Caminho do arquivo que receber os dados do formulrio ao ser enviado.
Os elementos do formulrio sero preenchidos com os componentes input onde a tag <input> conforme o exemplo
abaixo:

A tag input pode ser composta por vrios elementos onde neles podemos definir o tipo,nome, e o valor padro alm
de outras propriedades que no apresentaremos nessa apostila.
name Nome atribudo ao componente para sua identificao.
value Valor padro que pode ser atribudo no formulrio.
type Tipo de input, nele onde definimos o tipo elemento o input vai representar.
Observe a tabela abaixo com a definio dos tipos que podemos atribuir ao elemento type do input.

Projeto e-Jovem - Mdulo II

PHP Interae PHP com HTML

30

type

Descrio

texto

Elemento utilizado para entra de texto simples, um


dos mais utilizados.

password

Elemento utilizado para entrada de senhas, exibe *


no lugar dos caracteres inseridos pelo usurio.

checkbox

Utilizado para exibir caiar de verificao, muito


utilizado para perguntas booleanas.

radio

Exibe botes para seleo exclusiva, utilizado para


seleo de apenas um item.

file

Utilizado para seleo de arquivos, esse tipo muito


comum quando queremos enviar algo pelo
navegador(browser).

hidden

utilizado para armazenar um campo escondido


dentro do formulrio.

button

Usado para exibir um boto na tela, porm sua ao


definida por outra linguagem como javascript.

submit

Boto usado para submeter os dados do formulrio no


servidor, ele envia as informaes de acordo com as
informaes preenchidas na tag <form>.

reset

Utilizado para limpar todos os campo do formulrio,


voltando ao valor inicial.

select

Tipo utilizado para exibir uma lista de valores contido


na lista de seleo do usurio (cada valor guardado em
uma tag <option>, porm s pode ser selecionado uma
opo.

Tag:

rea de texto disponibilizado ao usurio, possui


mltiplas linhas (rows) e colunas (cols) que podem ser
determinados dentro de sua tag. No um tipo de input,
mas uma tag HTML para formulrio.

<textarea>

Exemplo:

No visvel ao usurio.

A tag <textarea> pode ser definida conforme o exemplo de cdigo abaixo:

Observe que definimos uma caixa de texto com 5 linhas e 27 colunas, isso define o tamanho que essa caixa vai ter
dentro do formulrio.

5.2. Exemplo de formulrio.


Veremos agora exemplos de alguns formulrios comumente encontrados, usando os componentes apresentado
anteriormente. No entraremos em detalhes do HTML, sendo apresentado de maneira direta, pois est subentendido
que o aluno j conhea HTML. Observe os exemplos abaixo:
Tela de login:
Cdigo-fonte:
Projeto e-Jovem - Mdulo II

PHP Interae PHP com HTML

31

Exemplo 30

Resultado:

Tela de Cadastro:
Cdigo-fonte:

Exemplo 31

Resultado com dados preenchidos:

Projeto e-Jovem - Mdulo II

PHP Interae PHP com HTML

32

Tela de envio de dados e arquivos:


Cdigo-fonte:

Exemplo 32

Resultado:

Com esses exemplos j podemos trabalhar com as informaes at agora mostrada. Para isso vamos conhecer os
dois principais mtodos de envio de dados de um formulrio para um arquivo PHP.

5.3. Mtodos Post e Get


Quando falamos em como enviar dados para um formulrio, deve vir em mente os mtodos GET e POST, que
so os mtodos utilizados. Mas quando fazemos uma requisio HTTP, sempre utilizamos um desses mtodos,
normalmente o GET.
Se voc digita um endereo na barra de endereo seu navegador e aperta a tecla enter (ou clica no boto ir), o
navegador faz uma requisio HTTP para o servidor do endereo digitado e o mtodo dessa requisio o GET. Se voc
clica em um link em um site, o navegador tambm se encarrega de fazer uma requisio HTTP com o mtodo GET para
buscar o contedo da pgina que voc clicou.
Esse mecanismo funciona da seguinte forma. Primeiro temos em um formulrio, um boto ou link. Quando
clicamos em umas dessas propriedades, estamos enviando uma requisio. A forma de enviar pode ser definida pelo
mtodo get ou post e deve ser enviada para algum arquivo, que ao receber, processe a informao devolvendo resultado
ou no. Veja a ilustrao abaixo:

Projeto e-Jovem - Mdulo II

PHP Interae PHP com HTML

33

5.3.1. Mtodo Get


O mtodo GET utiliza a prpria URI (normalmente chamada de URL) para enviar dados ao servidor. Quando
enviamos um formulrio pelo mtodo GET, o navegador pega as informaes do formulrio e coloca junto com a URI de
onde o formulrio vai ser enviado e envia, separando o endereo da URI dos dados do formulrio por um ? (ponto de
interrogao) e &.
Quando voc busca algo no Google, ele faz uma requisio utilizando o mtodo GET, voc pode ver na barra de
endereo do seu navegador que o endereo ficou com um ponto de interrogao no meio, e depois do ponto de
interrogao voc pode ler, dentre outros caracteres, o que voc pesquisou no Google.
Abaixo temos um exemplo de uma URL do gmail da google. Observe:

Podemos notar a passagem de dois valores:


?hl = pt-br, logo aps &shva=1, ou seja, temos ento a criao da varivel hl que recebe o valor pt-br, e tambm
a varivel shva que recebe como valor 1. Veja exemplos de cdigos com links enviando valores por mtodos GET.

Ao clicarmos em um desses links, podemos observar o seguinte comportamento na URL do navegador:


Link informao Estamos enviando dois valores via mtodo GET, um contendo 3, e o outro 4, para o arquivo
gravar.php .
Link Entrar Estamos enviando dois valores via mtodo GET, um contendo 24, e o outro annimo, para o
arquivo gravar.php .
Formulrio (<form>) Envias as informaes preenchidas no input nome via GET para o arquivo gravar.php
.

Recebendo dados via mtodo GET


Agora trabalharemos com o arquivo PHP, onde podemos resgatar os valores enviados pelo mtodo $_GET, sua
sintaxe a seguinte:
$_GET['nome_da_campo'] retorna o valor passado pelo campo.
$_GET retorna um array com todos os valore enviados e seus supostos ndices.
Quando queremos um valor especifico, colocamos o nome da varivel da URL ou o nome atribudo na
propriedade name do input do formulrio.
Exemplo com links:
Cdigo HTML:

Projeto e-Jovem - Mdulo II

PHP Interae PHP com HTML

34

Cdigo PHP (nome do arquivo: gravar.php):

Resultado:

Exemplo com Formulrio:


cdigo HTML:

Resultado no Browser:

Cdigo PHP (nome do arquivo: gravar.php):

Resultado:

Em casos que precisamos de mais segurana, onde o ocultamento de informao necessrio, o mtodo GET
no uma boa opo. Observe no exemplo anterior que qualquer valor passado pela URL fica visvel, e o usurio pode
ver informaes pessoais como um login e uma senha.

Dica: Em casos semelhante, utilize sempre o mtodo POST.

5.3.2. Mtodo Post


Muito semelhante ao mtodo GET, porm a principal diferena est em enviar os dados encapsulado dentro do
corpo da mensagem. Sua utilizao mais vivel quando trabalhamos com informaes segura ou que poder ser
alteradas somente por eventos do Browser. Sintaxe:

$_POST['nome_da_campo'] retorna o valor passado pelo campo.


$_POST retorna um array com todos os valore enviados e seus supostos ndices.
Projeto e-Jovem - Mdulo II

PHP Interae PHP com HTML

35

Veja o mesmo exemplo anterior, porm com o uso de POST:

Mudana no mtodo

Exemplo com Formulrio:


Cdigo HTML:

Cdigo PHP (nome do arquivo: gravar.php):

Resultado aps o envio dos dados preenchidos:

Com o uso do mtodo post, as informaes ficam invisveis ao usurio, isso evita que alguma causa malintencionada venha tornar os dados inconsistentes (dados sem fundamentos ou falsos).

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

36

Captulo 6. Estruturas de Controle e Repetio


Objetivos
Mostra estruturas de controle e sua aplicao prtica em PHP; definir qual a principal finalidade dessas
estruturas; mostrar exemplos em sua sintaxe; Mostrar aplicao e uso de foreach.
As estruturas que veremos a seguir so comuns para as linguagens de programao imperativas, bastando
descrever a sintaxe de cada uma delas resumindo o funcionamento. Independente do PHP, boa parte das outras linguagens
de programao tem estruturas iguais, mudando apenas algumas sintaxes.

6.1. Blocos de controle


Um bloco consiste de vrios comandos agrupados com o objetivo de relacion-los com determinado comando
ou funo. Em comandos como if, for, while, switch e em declaraes de funes blocos podem ser utilizados para
permitir que um comando faa parte do contexto desejado. Blocos em PHP so delimitados pelos caracteres { e }. A
utilizao dos delimitadores de bloco em uma parte qualquer do cdigo no relacionada com os comandos citados ou
funes no produzir efeito algum, e ser tratada normalmente pelo interpretador. Outro detalhe importante: usar as
estruturas de controle sem blocos delimitadores faz com que somente o prximo comando venha ter ligao com a
estrutura. Observe os exemplos:
Observe que temos um comando IF, onde passado a ele uma
expresso booleana que retorna verdadeiro ou falso.
O resultado da expresso FALSE(falso), pois 0 no maior que
2, fazendo com que o IF no execute o echo com comando1. Somente o
segundo echo executado, pois no pertence ao IF declarado.

Mas se quisermos que mais de um comando pertena a estrutura de controle, ser usado blocos de comandos ( {
comando; } ), onde atravs deles podemos delimitar e organizar os cdigos.
No cdigo ao lado, temos um bloco onde
inserimos dois comandos. Observe que eles no
sero executados, pois a expresso booleana
passada para o IF falsa.

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

37

6.2. If e else
Essa estrutura condicional est entre as mais usadas na programao. Sua finalidade induzir um desvio
condicional, ou seja, um desvio na execuo natural do programa. Caso a condio dada pela expresso seja satisfeita,
ento sero executadas a instrues do bloco de comando. Caso a condio no seja satisfeita, o bloco de comando ser
simplesmente ignorado. Em lgica de programao o que usamos como SE (expresso) ENTO {comando:}.

Sintaxe:

Exemplo:

if (expresso)
comando;
if (expresso){
comando1;
comando2;
comando3;
Exemplo 33

Caso a condio no seja satisfatria (FALSE), podemos atribuir outro comando pertencente ao IF chamado ELSE,
como se fosse a estrutura SENO em lgica de programao.
Sintaxe:

Exemplo:

if (expresso)
comando;
eles
comando;
if (expresso){
comando1;
comando2;
comando3;
} else {
comando1;
comando2;
comando3;
}

Exemplo 34

Nesse exemplo temos uma expresso booleana onde retorna falso, com isso o IF no executa, passando a
execuo para o eles, que por sua vez executa e atribu o valor menor idade a varivel $texto.
Em determinadas situaes necessrio fazer mais de um teste, e executar condicionalmente diversos comandos
ou blocos de comandos. Isso o que podemos chamar de If's encadeados, onde usamos a estrutura IF-ELSE para
facilitar o entendimento de uma estrutura do tipo:

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio


Sintaxe:

38
Exemplo:

if (expressao1)
comando1;
else
if (expressao2)
comando2;
else
if (expressao3)
comando3;
else
comando4;
Exemplo 35

Exerccio rpido:
1). Faa uma script em PHP que possua 4 notas de um aluno (cada uma em uma varivel). Depois
calcule e imprima a mdia aritmtica das notas e a mensagem de aprovado para mdia superior ou igual a
7.0 ou a mensagem de reprovado para mdia inferior a 7.0.
2) Faa um script em PHP que receba a idade de um nadador (representada por uma varivel chamada
$idade) e imprima a sua categoria seguindo as regras:
Categoria

Idade

Infantil A

5 - 7 anos

Infantil B

8 - 10 anos

Juvenil A

11- 13 anos

Juvenil B

14- 17 anos

Snior

maiores de 18 anos

6.3. Atribuio condicional (ternrio)


Como j vimos exemplos de atribuio condicionais (ternrios), podemos defini-los usando a sintaxe:
(Expresso booleana)? (Executa caso verdadeiro): (executa caso falso);
Isso se aplica quando queremos uma estrutura resumida, onde podemos ter um resultado mais direto, como por
exemplo, atribuir um valor a uma varivel dependendo de uma expresso. Observe o exemplo abaixo onde
envolvemos uma varivel do tipo string, porm o valor atribudo a essa varivel dever ser de acordo com o valor
da idade:

uma estrutura parecida com IF e ELSE, onde dependendo da expresso booleana podemos executar um
bloco ou no.
Exerccio rpido:
1) Faa uma script em PHP que receba um nmero representado por uma varivel. Verifique se este
nmero par ou mpar e imprima a mensagem.
2) Crie outro script baseando em um seguro de vida com as seguintes regras:
Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio


Idade:
18 a 24
25 a 40
41 a70

39

Grupo de Risco :
Baixo
Mdio
Alto

6.4. Switch
Observe que quando temos muitos if's encadeados estamos criando uma estrutura que no considerada uma
boa prtica de programao. Para resolver esse problema temos uma estrutura onde sua funcionalidade semelhante ao
IFELSE. O comando SWITCH uma estrutura que simula uma bateria de teste sobre uma varivel. Frequentemente
necessrio comparar a mesma varivel com valores diferentes e executar uma ao especifica em cada um desses valores.

Sintaxe:

Exemplo:

switch(expresso)
{
case valor
comandos;
case valor
comandos;
case valor
comandos;
case valor
comandos;
...

1:
1:
1:
1:

}
Exemplo 36

Resultado: opo 2: opo 3:opo 4:opo 5:


Nesse exemplo temos o nmero = 2, onde o switch compara com os case's o valor recebido, o bloco que
executado do segundo case, porm, os demais tambm so executados para que tenhamos um resultado satisfatrio
temos que usar em cada case um comando chamado break. No qual tem a funo de para o bloco de execuo.

6.4.1. Switch com break


Break uma instruo (comando) passada quando queremos parar o fluxo da execuo de um programa. Em
PHP, ele tem a mesma funo que abortar o bloco de cdigo correspondente.
Observe o mesmo exemplo com o uso de break:
Temos agora como resultado opo 2:. O comando break fez com que os demais case's abaixo do 'case 2' no
sejam executados.

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

40

Obs.: Alm de nmeros podemos tambm comparar outros


tipos como string, pontos flutuantes e inteiros, veja um
exemplo abaixo:

Exemplo 38
Exemplo 37

Mas o que acontece se no tivermos um valor que seja satisfatrio aos casos existentes no switch? A resposta
bem simples, nenhum dos blocos seria executados, porm temos um comando onde determinamos uma opo padro
caso nenhuma das outras venha ter resultado que satisfaa a expresso passada para o switch chamada default (padro).
Veja um exemplo:

Resultado: opo invlida

Exemplo 39

A instruo passada no condiz com nenhum dos casos existentes. Por esse motivo o bloco pertencente ao
comando default ser executado.

O comando default pode ser inserido em qualquer lugar dentro do switch, porm caso isso acontea,
o uso do comando break deve ser adicionado para evitar que os case's abaixo sejam executados.
A partir de agora trabalharemos as estruturas de repetio. Elas muito utilizadas nas linguagens de programao.

Exerccio rpido:
1) Faa um script em PHP usando switch, onde receba uma varivel e mostre as seguintes opes:
1 - mdulo.
2 - somar.
3 - subtrair.
4 - multiplicar.
5 - dividir.

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

41

6.5. While
O WHILE uma estrutura de controle similar ao IF, onde possui uma condio para executar um bloco de
comandos. A diferena primordial que o WHILE estabelece um lao de repetio, ou seja, o bloco de comandos
ser executado repetitivamente enquanto a condio passada for verdadeira. Esse comando pode ser interpretado
como ENQUANTO (expresso) FAA { comandos...}.

Sintaxe:

while (expresso){
comandos;
}

Quando estamos usando um lao de repetio, podemos determinar quantas vezes ele deve ou no se repetir.
Isso pode ser feito de forma manual, onde o programador determina, ou automaticamente, onde quem vai determinar
fluxo de execuo o cdigo-fonte atravs de funes do PHP, funes estas j existentes. Por exemplo a funo
sizeOf.
Para trabalharmos com essa contagem de quantas vezes o lao deve se repetir, usaremos incremento ou
decremento de uma varivel conforme vimos no capitulo de operadores em PHP. Observe o exemplo abaixo:

Exemplo 40

Resultado: 123456789
Nesse exemplo criamos um lao de repetio que tem como condio $a < 10, a cada lao executado um
incremento na varivel $a, fazendo com que o seu valor aumente at a condio no ser mais satisfatria.

Dicas: Tenha cuidado quando estiver trabalhando com loop's (lao de repetio), pois caso a
expresso passada esteja errada, pode ocasionar em um loop infinito fazendo com que o bloco de
cdigo se repita infinitamente. Isso pode ocasionar um travamento do navegador ou at mesmo do
prprio servidor WEB.
Vamos ver agora um exemplo em que o lao se repete de forma automtica, onde quem determina o loop
uma funo do PHP e no um numero determinado pelo programador.
A funo strlen() recebe uma string e retora a quantidade de caracteres incluindo tambm os espaos em
branco. Ele poderia ser aplicado diretamente no echo, mas no exemplo, ele determina a quantidade de loop's.

Exemplo 41

Resultado: a frase possui 14 caracteres


Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

42

Exerccio rpido:
1) Faa um script que conte de 1 at 100.

2) Faa um script que imprima na tela nmeros de 3 em 3 iniciando com 0 at 90, ex: 0,3,6,9...

6.6. Do...while
O lao do...while funciona de maneira bastante semelhante ao while, com a simples diferena que a expresso
testada ao final do bloco de comandos. O lao do...while possui apenas uma sintaxe que a seguinte:

Exemplo:

Sintaxe:

do {
comando;
. . .
comando;
} while (expresso);

Exemplo 42

Resultado: 123456789

Dicas: Talvez na criao de alguma pgina ou sistema web, seja necessrio executar um bloco de
cdigo existente em um lao de repetio pelo menos uma vez, nesse caso podemos usar o
do...while.

Exerccio rpido:
1) Faa um script que conte de -1 at -100 usando do while.
2) Faa um script que imprima na tela somente nmeros pares de 2 at 20 com do while.

6.7. For
Outra estrutura semelhante ao while o for, onde tem a finalidade de estabelecer um lao de repetio em um
contador. Sua estrutura controlada por um bloco de trs comandos que estabelecem uma contagem, ou seja, o bloco de
comandos ser executado determinado nmero de vezes.

Sintaxe:

for( inicializao; condio; incremento ){


comandos;
}

Parmetros

Descrio

inicializao

Parte do for que executado somente uma vez, usado para inicializar uma varivel.

condio

Parte do for onde declarada uma expresso booleana.

incremento

Parte do for que executado a cada interao do lao.

Lembrando que o loop do for executado enquanto a condio retornar expresso booleana verdadeira. Outro
Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

43

detalhe importante que podermos executar o incremento a cada lao, onde possibilitamos adicionar uma varivel ou
mais. Mostraremos agora um exemplo fazendo um comparativo entre a estrutura de repetio do while e tambm a do for
de forma prtica.

Exemplo:
while

for

Exemplo 44

Exemplo 43

Ambos os exemplos geram o mesmo

resultado:123456789

O for no precisa ter necessariamente todas as expresses na sua estrutura, com isso podemos criar um exemplo de
for onde suas expresses so declaradas externamente.

Exemplo 45

Observe nesse exemplo uma proximidade muito grande do comando while. Apesar de ser funcional, no uma
boa prtica de programao utilizar desta forma.

Exerccio rpido:
1) Faa um script que receba duas variveis $a e $b, logo aps imprima os nmeros de
intervalos entre eles com o uso de for.ex: a=5 ,b = 11, imprime : 5,6,7,8,9,10,11.

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

44

6.8. Foreach
O foreach um lao de repetio para interao em array's ou matrizes, o qual estudaremos com mais detalhes
no prximo captulo. Trata-se de um for mais simplificado que compe um vetor ou matriz em cada um de seus elementos
por meio de sua clusula AS.
Exemplo:

Sintaxe:

foreach( expresso_array as $valor){


comandos;
}
Exemplo 46

Resultado: ana maria joo alex


Veremos adiante que um array uma varivel composta por vrios elementos. No caso do exemplo anterior, esses
elementos so nomes de pessoas. A finalidade do foreach justamente a cada lao, pegar um desses valores e atribuir a
uma varivel $nome at que tenha percorrido todo array e assim, finalizar o lao. Tambm podemos saber em qual posio
o elemento se encontra no array, para isso basta adicionar uma nova varivel logo aps o AS seguido de =>.

Observe o exemplo:

Resultado:

0-ana
1-maria
2-joo
3-alex
Exemplo 47

Nesse exemplo observamos que cada elemento do array possui um ndice (chave), imprimindo na tela o numero
da posio e o valor guardado.

6.9. Break
Outro comando importante o break, usado para abortar (parar) qualquer execuo de comandos como SWITCH,
WHILE, FOR, FOREACH, ou qualquer outra estrutura de controle. Ao encontrar um break dentro de um desses laos, o
interpretador PHP interrompe imediatamente a execuo do lao, seguindo normalmente o fluxo do script.

Sintaxe:

while....
for....
break <quantidades de nveis>;

Vamos ver um exemplo com o uso de break dentro de um lao de repetio (no caso o for), onde criamos um
lao infinito, porm colocamos um if com a condio de parar o lao atravs do break. Observe:

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

45

Exemplo 48

Podemos notar nesse exemplo a criao de um lao(loop) infinito, que ocorre quando tiramos a condio do for,
ou atribumos for( ; true ; ), porm a condio fica na responsabilidade do if, quando o valor de $a e igual a 10, faz
com que o if execute o break, fazendo com que o lao pare de funcionar.
Mas se tivssemos mais de um lao, como poderamos definir qual deles deixaria de funcionar? Para responder
essa pergunta usamos a quantidades de nveis que pode existir em um break, observe o exemplo abaixo:

Resultado:

Exemplo 49

Observe que para definir qual nvel podemos parar utilizamos o break, ou seja, o primeiro nvel onde o break
est localizado, no exemplo citado temos dois nveis, e determinamos pelo break 2 que o segundo for( que o de fora!
) Deixaria de funcionar.

6.10. Continue
A instruo continue, quando executada em um bloco de comandos for/while, ignora as instrues restantes at
o fechamento em }. Dessa forma, o programa segue para a prxima verificao da condio de entrada do lao de
repetio, funciona de maneira semelhante ao break, com a diferena que o fluxo ao invs de sair do lao volta para o
incio dele. Veja um exemplo:

Resultado:

Exemplo 50

0,2,4,6,8,10,12,14,16,18,
Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

46

Podemos observar a seguinte lgica no exemplo acima:


Criamos um lao que tem 20 interaes de repetio. Logo aps temos um if, onde, quando o resto da diviso
por 2 for igual a 0 (nmero par), o valor booleano ser false. Quando no for igual a 0, significa que a varivel $i um
nmero mpar (ex: 5%2 = 1), ento temos um valor booleano true. Isso significa que o if executa somente quando os
nmeros forem mpares. Adicionamos um continue, que ao executar o if, faz com que volte novamente para o incio do
for impedindo de alcanar o echo em seguida. Com isso, em vez de mostramos os nmeros impares, imprimimos somente
os nmeros pares incluindo o 0. Resumimos que o cdigo s passa adiante quando o if no executa o continue.
Fluxograma:

Assim como o break, tambm podemos definir em qual nvel queremos que a execuo continue. Veja o exemplo
abaixo:

Resultado:
Podemos observar ento o uso de continue dentro de um lao infinito. Ele faz com que o lao de nvel 3 seja
executado toda vez que a execuo passe pela linha 10 do cdigo, logo, impede que o programa fique sempre executando
dentro do while de nvel 1. Com isso, o while da linha 4 do cdigo tem um ciclo de vida de 5 laos.
Observe tambm que os dois ltimos echo's nunca sero alcanados, pois o comando continue impede que o
fluxo do cdigo passe adiante, fazendo voltar ao nvel determinado.
Resumindo: O continue usado dentro de estruturas de loops para saltar o resto da execuo do loop atual e
continuar a execuo na avaliao do estado, em seguida, o incio da prxima execuo.

Fluxograma:

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

47

Exerccio resolvido com switch


Qual a mensagem que ser gerada para o usurio no final desse cdigo?
A imagem v inculada no pode ser exibida. Talv ez o arquiv o tenha sido mov ido, renomeado ou excludo. Verifique se o v nculo aponta para o arquiv o e o local corretos.

Entendendo o algoritmo:

No escopo temos uma varivel com contedo de $texto = Ol

No escopo temos uma varivel $op = 2.

O valor da varivel $op ser avaliado no switch.

O switch redireciona para o caso 2, pois o valor da varivel $op = 2.

Uma operao de concatenao realizada, a varivel $texto agora apresenta: Ol,


senhores.

Abaixo da concatenao no existe o comando break, podendo prosseguir com o caso 3 logo
abaixo.

Uma nova operao de concatenao feita no caso 3 com a varivel $texto, tornando-se :
Ol, senhores, senhoras.

Ao encontrar o break, a estrutura de seleo mltipla ser finalizada. Realizando abaixo da


estrutura uma ltima operao de concatenao: Ol, senhores, senhoras e Jovens de todo o
Cear

Por fim, temos a varivel $texto sento impressa com:


Ol, senhores, senhoras e Jovens de todo o Cear

Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

48

Exerccio Resolvido com do while.


Existe algum erro nesse cdigo? Se existe, onde estaria o erro, caso contrrio qual mensagem ser gerada para o
usurio?
A imagem v inculada no pode ser exibida. Talv ez o arquiv o tenha sido mov ido, renomeado ou excludo. Verifique se o v nculo aponta para o arquiv o e o local corretos.

Entendendo o algoritmo:

No escopo temos uma varivel $vidas = 0;

No escopo temos uma varivel $pontos = 0;

A estrutura do{}while($vidas>0) realiza pelo menos 1 vez o bloco de cdigo independente


da condio.

na estrutura de condio if($pontos==0) podemos identificar um condio true pois o


valor da varivel pontos igual a 0. Assim pontos ser incrementado em 1.

a estrutura de repetio do while verificada, como o valor da varivel $vidas igual a 1,


essa estrutura ir retornar falsa encerrando a estrutura de repetio.

Por fim, a impresso de um texto que ser de: Voc acumulou 1 Pontos.
Obs.: Perceba que nesse algoritmo no diferencia a palavra PONTOS e PONTO de acordo com
o nmero de vidas.
Pergunta: Como melhora riamos esse cdigo para caso eu tenha apenas 1 vida, eu possa imprimir:
Voc acumulou 1 Ponto.

6.11. Exerccios Propostos


EP06.1: Qual a principal finalidade de uma estrutura de controle?
EP06.2: Qual a principal finalidade de uma estrutura de repetio?
EP06.3: Crie um cdigo com uma condio ternria onde receba um valor booleano e de acordo com o valor
passado na expresso, deve imprimir sim ou no.
EP06.4: Com o comando IF e ELSE crie um cdigo que determine se uma expresso verdadeira ou falsa.
EP06.5: Qual a finalidade da estrutura de controle SWITCH e cite um exemplo onde comparamos uma opo
com 4 casos diferente?
EP06.6: Crie um contador de 1 at 20 usando a estrutura de repetio WHILE.
EP06.7: Crie um contador de 1 at 100 usando DO WHILE.
EP06.8: Crie um contador de 100 at 1 usando FOR.
Projeto e-Jovem - Mdulo II

PHP Estruturas de Controle e repetio

49

EP06.9: Qual a finalidade de um FOREACH?


EP06.10: Crie um cdigo onde podemos para a execuo de um lao infinito com o uso de BREAK.
EP06.11: Como podemos determinar o uso de CONTINUE e qual a sua aplicao prtica em PHP.
EP06.12: Crie um cdigo com as seguintes caractersticas:
a). Dever receber um valor inicial e outro final (crie duas variveis para esse fim).
b). Como o comado FOR crie um lao onde a contagem e determinada pelo valor inicial e final?
c) Dentro do for dever conter um IF e ELSE responsvel por compara os valores passado a ele e imprimir os
pares e impares. Exemplo:
IF($valor%2==0)
echo $valor. um nmero par;
ELSE
echo $valor. um nmero impar;
d) Exemplo prtico: foi passado o nmero inicial 8 e o final 15, ento o script PHP dever imprimir o intervalo
entre esse nmero ou seja 8,9,10,11,12,13,14,15, mostrando quais deles so pares e quais so mpares.

ANOTAES

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

50

Captulo 7. Manipulao de Arrays


Objetivos
Abordar de forma clara as principais estruturas de um array; mostrar a sua criao e manipulaes
possveis; Definir arrays multidimensionais ou matrizes; Determinar formas de interaes e acessos.
Um array no PHP atualmente um conjunto de valores ordenado. Podemos relacionar cada valor com uma chave,
para indicar qual posio o valor est armazenado dentro do array. Ele otimizado de vrias maneiras, ento
podemos us-lo como um array real, lista (vetor), hashtable (que uma implementao de mapa), dicionrio,
coleo, pilha, fila e provavelmente muito mais. Alm disso, o php nos oferece uma gama enorme de funes para
manipul-los.
A explicao dessas estruturas est alm do escopo dessa apostila, mas todo contedo aqui abordado traz uma boa
base para quem estar iniciando o contedo de array.

7.1. Criando um Array


Arrays so acessados mediante uma posio, como um ndice numrico. Para criar um array pode-se utilizar a
funo array ([chave =>] valor, ). Exemplo:
Sintaxe:

$nomes = array ('Maria','Joo','Alice','Alex');


ou

$nomes = array(0=>'Maria', 1=>'Joo', 2=>'Alice', 3=>'Alex');


Nessa sintaxe temos duas formas de declarar uma varivel do tipo array. Onde a chave e o ndice podem ser de
forma automtica como no primeiro exemplo, ou manual como no segundo. Outro detalhe importante que: todo
array comea pela chave ou ndice de nmero 0, quando o mesmo no declarado.
Tambm temos outras formas de criar um array, onde simplesmente podemos adicionar valores conforma a sintaxe
abaixo:

$nome[]
$nome[]
$nome[]
$nome[]

=
=
=
=

'Maria';
'Joo';
'Carlos';
'Jos';

A figura abaixo representa um array que tem como valor representao de cores, e possui dez posies, cada posio
representa uma cor, seu ndice (chave) vai de 0 at 9. Veja:

Em cdigo temos:

7.2. Arrays Associativos.


Aos arrays associativos associa-se um determinado valor ou nome a um dos valores do array.
O array associativo usa strings como ndice, onde cada string pode representas uma chave.
Observe a sintaxe:
Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

51

$var = array('texto1'=>'valor1','texto2'=>'valor2',...,'textoN'=>'valorN');
Observe que quando usamos arrays associativos, a compreenso mais fcil, dando mais legibilidade ao cdigo.
Porm no utilizado quando usamos um array dentro de um lao (loop), mas em outros casos sempre bom utilizar
arrays associativos. Veja um exemplo:

Outra forma de iniciarmos o mesmo array adicionar valores conforme abaixo:

A imagem abaixo representa os exemplos anteriores:

Umas das vantagens do array associativo quando fazemos o


acesso ao array, onde temos de forma clara e compreensvel o valor que
aquela chave pode conter. Como por exemplo nome, onde s vai existir
o nome de pessoas. Veja abaixo um exemplo de acesso ao valores
armazenados em um array dessa natureza.

Exemplo:

Exemplo 51

Dessa forma podemos acessar o array. Basta determinar o nome do array e qual a chave, onde cada chave tem
um valor j determinado. Resultar em um erro o uso de uma chave errada.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

52

7.3. Interaes
Quando falamos de interaes em um array estamos dizendo o mesmo que percorrer esse array usando
mecanismos da prpria linguagem. Como isso as interaes podem ser feitas de vrias formas, mas no PHP podem ser
iterados pelo operador FOREACH que j vimos anteriormente.

Exemplo:

Exemplo 52

Resultado:

Esse tipo de interao muito utilizado, principalmente quando temos arrays associativos.
Dicas: Sempre que se depararem com arrays, onde haja a necessidade de percorrer suas
informaes independentemente da chave, procure sempre utilizar mecanismos de programao
mais simplificados como FOREACH.

7.4. Acessando um Array


Quando criamos um array temos que ter em mente que estamos criando uma varivel que possui vrios valores
e que os mesmo podem ser acessados a qualquer momento. Cada valor est guardado em uma posio que pode ser
acessada atravs de uma chave.
A sintaxe para acesso simplificado de um array a seguinte:

nome_do_array[ chave_de_acesso ];
Temos que ter cuidado ao passar uma chave para o array, pois ela deve conter o mesmo nome de qualquer umas
das chaves existentes no array. Caso a chave no exista, o valor no poder ser resgatado. A sintaxe acima retorna um
valor contido no array, por esse motivo temos que atribuir esse valor como mostra o exemplo abaixo:

Exemplo 53

Resultado: telefone.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

53

7.5. Alterando um Array


Podemos alterar qualquer valor de um array. muito semelhante ao acesso, onde, a diferena est na chamada do
array. nesse momento que atribumos um novo valor.
Veja a sintaxe:

nome_do_array[ chave_de_acesso ] = <novo_valor>;


Observe o exemplo abaixo:
Resultados:

Exemplo 54

Vimos no exemplo anterior o valor da posio 1 do array ('telefone') foi alterada para sobrenome. Vale ressaltar
que esse array tem suas chaves definidas de forma automtica. A primeira posio 0, a segunda 1, e assim
sucessivamente. Veja mais um exemplo onde alteramos o valor, mas usando o operador de atribuio += e concatenao
.=:

Exemplo 55

Resultados: Arroz Tio Joo 1.98


Podemos observar que assim como as variveis comuns, a forma de alterar o valor de um array igual. A
diferena est na chamada do array, pois temos que passar a chave alm do valor que queremos atribuir. Outro detalhe
importante o tipo de valor, onde supostamente devemos atribuir os tipos compatveis. Ou seja, se o valor atribudo a
chave produto for do tipo string, no podemos usar os operadores de atribuio para atribuir um outro tipo, porm
podemos mudar o tipo do valor pelo operador de atribuio simples (=).

Exemplo:

$var[2] += 1.90;
// o tipo um ponto flutuante antes e depois.
$var[2] = 'bom dia' ;
// agora temos a mudana de tipo ponto
flutuante para string.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

54

7.6. Arrays multidimensionais


Os arrays multidimensionais so estruturas de dados que armazenam os valores em mais de uma dimenso. Os
arrays que vimos at agora armazenam valores em uma dimenso, por isso para acessar s posies utilizamos somente
um ndice ou chave. Os arrays de 2 dimenses salvam seus valores de alguma forma como em filas e colunas e por isso,
necessitaremos de dois ndices para acessar a cada uma de suas posies.
Em outras palavras, um array multidimensional como um continer que guardar mais valores para cada
posio, ou seja, como se os elementos do array fossem por sua vez outros arrays.
Outra ideia que temos que matrizes so arrays nos quais algumas de suas posies podem conter outros arrays
de forma recursiva. Um array multidimensionais pode ser criado pela funo array ():
Na figura abaixo temos a representao de um array com duas dimenses.

Uma diferena importante de um array comum


para um multidimensional a quantidades de chaves
(ndices), onde cada um dos ndices representa uma
dimenso. Observe o cdigo da representao ao lado.

Cdigo:

Outra forma de iniciar o array:

Observe que temos uma chave para representar a linha e outra para representar a coluna, assim, determinando
uma matriz 4x4. Podemos ver tambm que inicializamos um array dentro do outro. Cada sub-array uma linha, e cada
elemento do array maior representa as colunas.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

55

Para acessarmos o valor de um array multidimensional, basta colocar as duas ou mais chaves da posio que
queremos acessar. muito semelhante ao array de uma nica dimenso.
Observe o acesso aos exemplos anteriores:

Sintaxe:

nome_do_array[ chave_1 ][ chave_2 ]...[chave_n] ;


Exemplo:

Exemplo 56

Dessa forma podemos acessar o elemento numrico 1.2 que est guardado na posio linha 1 coluna 2, lembrando
que o primeiro elemento de um array 0. Abaixo, um exemplo que acessa todos os valores do array e imprime com quebra
de linha:

Resultado:

0.0 igual a 0 , 1.0 igual a 1 e assim


sucessivamente.
Exemplo 57

Explicando o cdigo:
Linha 2 criamos um array de duas dimenses.
Linha 7 temos um foreach para percorrer o primeiro array, ele retorna na varivel $linha os sub-arrys contido no
array maior.
Linha 8 agora temos outro foreach que vai percorrer os valores dos arrays passando pra varivel $linha.
Linha 9 criamos uma varivel $i para contar os elementos.
Linha 10 imprime os valores.
Linha 11 temos um IF, quando $i for igual a 4, significa que podemos executar o cdigo pertencente ao If,
determinando que chegou ao quarto elemento do array.
Linha 12 quebra de linha com o <br>.
Linha 13 zera a varivel $i para comear a contagem de novo.
Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

56

7.7. Funes com Arrays


Em PHP temos um conjunto de funcionalidades e que j vem prontas para serem utilizadas. Trata-se de funes
que j esto pr-definidas, voc pode encontr-las facilmente no site php.net.
Abordaremos agora funes utilizadas exclusivamente para manipulao de array, funes de acesso, ordenao,
dentre outras. Obviamente que no falaremos de todas, pois existem muitas funes, mas mostraremos as mais utilizadas,
e outras que so definidas como principais.

var_dump
Essa funo muito usada por programadores que pretendem realizar debug (anlise mais detalhado para
encontrar supostos erros). Observe um exemplo prtico:

Exemplo 58

Sada no Browser:

print_r
Imprime o contedo de uma varivel assim como var_dump(), porm com um formato menos detalhado e mais
legvel ao programador. Exemplo:

cdigo:

Sada no Browser:

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

57

Dicas: Ao olhar o cdigo fonte da pgina aberta, nota-se o cdigo bem organizado, porm os
comentrios no podem ser vistos. Procure olhar o cdigo-fonte sempre que tiver dvida de que
cdigo HTML o PHP est gerando. Clique com boto direito do mouse, procure cdigo fonte, e
observe o que gerado!

array_push
Adiciona elementos ao final de um array. Tem o mesmo efeito de utilizar a sintaxe:

var_dump( nome_do_array , novo_valor)


Exemplo:

Resultado:

array_pop
Remove um valor no final de um array. Sintaxe:

array_pop(nome_do_array);
Exemplo:

Resultado:

array_shift
Remove um elemento do incio de um array, sintaxe:

array_shift( nome_do_array )
Exemplo:

Resultado:

Como j sabemos como lidar com essas funes, observemos que basta conhecer a sintaxe para montarmos um
exemplo. Apresentaremos agora de forma resumida as demais funes.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

58

Ateno!
Todas as funes aqui apresentadas so para mostrar ao aluno as formas de trabalharmos
com determinadas funes. Fica a critrio do aluno se aprofundar ou no nesse
conhecimento, uma vez que exista inmeras funes.
Observe a tabela abaixo com outras funes:

Funes

Definio

Sintaxe:

array_unshift

Adicionar um elemento no inicio de um


array.

array_unshift(nome_array , novo_valor)

array_pad

Preenche um array com valores,


determina a quantidade de posies.

array_pad(nome_array, tamanho ,valor)

array_reverse

Recebe um array e retorna-o na ordem


inversa.

array_reverse( nome_array, valor_booleano)

array_merge

Uni dois arrays criando um novo array.

$novo_array = array_merge(array_1,array_2)

array_keys

Retorna somente as chaves do array.

array_keys(nome_array)

array_values

Cria um novo array com os valores de


outro.

$novo_array = array_values(outro_array)

array_slice

Extrai posies de um array.

$var = array_slice(nome_array, inicio, tamanho)

Count

Conta quantos elementos tem um array

$var = count(nome_array)

Funes

Definio

Sintaxe:

in_array

Verifica se um array possui


determinado valor.

in_array(valor_buscado, nome_array)

sort

Ordena um array pelos valores.

sort(nome_array)

rsort

Ordena um array pelos valores de


ondem reversa.

rsort(nome_array)

explode

Converte uma string em um array.

explode(separador, nomer_string)

implode

Converte um array em uma string

implode(separador, nome_array)

Essa tabela mostra as funes mais comuns. De repente voc pode se deparar com algumas delas em cdigos j
feito, ou baixados da internet. Exemplo disso so as ferramentas CMS, como joomla ou wordpress, que so feitas em PH.
Existem muitas combinaes dessas funes e outras a mais em seu cdigo-fonte. Veja alguns exemplos utilizando
algumas das funes anteriores.

Exemplo 59

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

59

Exerccio Resolvido com Array.


Quais sero as letras que sero geradas a partir desse cdigo?
A imagem v inculada no pode ser exibida. Talv ez o arquiv o tenha sido mov ido, renomeado ou excludo. Verifique se o v nculo aponta para o arquiv o e o local corretos.

Entendendo o algoritmo:


No escopo temos uma varivel chamada valor = 2 e ndice que recebe o contedo que est em valor que 2
tambm.

Temos tambm um array que ir receber um conjunto descrito, lembrando que o ndice inicial de um vetor zero
at a sua dimenso menos um. Nesse caso temos 7 elementos, ento os ndices para o meu vetor so de zero at
6.

Para cada impresso, temos uma letra seguido de uma concatenao com um espao em branco, ento podemos
chegar a concluso que ir ser impresso um conjunto de letras com e espaos.

O primeiro echo ir imprimir o valor de ndice = 2 que representado pela letra e, em seguida ndice ser
incrementado passando a ser igual a 3.

O segundo echo ir imprimir o valor de ndice = 3 que representado pela letra a.

O terceiro echo ir imprimir o valor de (ndice - 2) = ( 3-2 ) = 1 que representado pela letra b

O quarto echo ir imprimir o ndice zero do meu array representado pela letra d

O quinto echo ir imprimir o ndice (valor +1 )= (2 + 1) = 3 representando pela letra a

Por fim podemos identificar a mensagem no PHP : e a b d a.

7.8. Exerccios Propostos


EP07.1: O que um array, e qual a sua principal finalidade?
Declare um array chamado nomes com 8 posies, e grave nomes de pessoas que voc conhece em cada uma
delas. Aps criar o array responsa as questes 2, 4, 5, 10, 11:
EP07.2: Utilizado o array responda.
a) Qual nome impresso no navegador se colocarmos o cdigo:
echo nomes[3];
b) Quais nomes aparecer se adicionamos os seguintes cdigos:
for($i= 6; $i>1 ; i--)
echo nomes[$i];
c) O que acontece se chamarmos uma posio que no existe no array, exemplo:
nomes[15];
EP07.3: O que um array associativo, de exemplos:
EP07.4: Usando o comando foreach, crie uma interao onde todos os nomes possa ser impresso na tela.
EP07.5: Utilizando o mesmo cdigo, altere alguns nomes do array.
EP07.6: O que um array multidimensional?
EP07.7: Crie um array palavras multidimensional 5x3 com os valores da tabela abaixo, e responda as
Projeto e-Jovem - Mdulo II

PHP Manipulao de Arrays

60

questes 7,8,9:

oi

tudo

estar

voc

vai

com

dia

bem

sim

casa

hoje

em

EP07.8: Crie um cdigo PHP onde com os valores do array possa ser impresso na tela com a frase oi, tudo
bem com voc?.

EP07.9: Utilizando as posies da sequncia [1][0],[1][1],[0][2],[4][2],[4][0],[4][1],[1][2] do array palavras,


qual frase podemos formular? Utilize a funo print() para mostrar na tela do navegador.
EP07.10: Construa um cdigo PHP para mostra uma resposta para a pergunta da questo 7. (use o comando
echo para imprimir na tela.
EP07.11: Utilizando a funo sort, imprima em ordem alfabtica os nomes do array nomes.
EP07.12: Use o comando array_unshift() para adicionar mais dois nomes no array.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Funes

61

Captulo 8. Manipulao de Funes


Objetivos
Apresentar as estruturas de funes em PHP; Mostrar qual a definio entre varivel global e esttica e
sua relao com o uso de funes; Mostrar tambm o uso de passagem de parmetros, recurso e qual a
sua principal finalidade.
Quando queremos um cdigo funcional para determinado fim, com por exemplo fazer um clculo ou alguma
interao dentro do PHP, usamos o que chamamos de funo. As funes so um pedao de cdigo com o objetivo
especfico, encapsulado sob uma estrutura nica que recebe um conjunto de parmetros e retorna ou no um determinado
dado. Uma funo declarada uma nica vez, mas pode ser utilizada diversas vezes. uma das estruturas mais bsicas
para prover reusabilidade ou reaproveitamento de cdigo, deixando as funcionalidades mais legveis.

8.1. Declarando uma Funo.


Declaramos uma funo, com o uso do operador function seguido do nome que devemos obrigatoriamente
atribuir, sem espaos em branco e iniciando sempre com uma letra. Temos na mesma linha de cdigo a declarao ou no
dos argumentos pelo par de parnteses (). Caso exista mais de um parmetro, usamos virgula (,) para fazer as separaes.
Logo aps encapsulamos o cdigo pertencente a funo por meio das chaves ({}). No final, temos o retorno com o uso
da clusula return para retornar o resultado da funo que pode ser um tipo inteiro, array, string, ponto flutuante etc. A
declarao de um retorno no obrigatrio. Observe a sintaxe:

function nome_da_funo( $argumento_1, $argumento_2, $argumento_n )


{
comandos;
return $valor;
}
Observe um exemplo onde criamos uma funo para calcular o ndice de massa corporal de uma pessoa (IMC),
onde recebe como parmetro dois argumentos. Um a altura representada pela varivel $altura e o outro o peso
representada pela varivel $peso. Passamos como parmetros para essa funo o peso = 62 e a altura = 1.75. Observe:

Exemplo:

Exemplo 60

Resultado: 20.244897959184
Nesse exemplo temos a declarao e logo aps a chamada da funo, onde nesse momento que passamos os
dois parmetros na ordem que foi declarada na funo. Lembrando que essa ordem obrigatria.
Observe mais um exemplo, onde a funo declarada, porm no possui a clusula return.

Resultado:

Projeto e-Jovem - Mdulo II

PHP Manipulao de Funes

62

8.2. Escopo de Variveis em Funes


Um conceito importante em programao so os tipos de declaraes de variveis, onde sua visibilidade vai
depender de onde ela declarada. Os acessos a essas variveis podem ser definidos da seguinte forma:
Variveis locais So aquelas declaradas dentro de uma funo e no tem visibilidade fora dela. Veja um exemplo:
O valor da varivel $a no impresso na tela, pois ela s
existe dentro da funo, qualquer outra varivel
declarada com o mesmo nome fora da funo uma nova
varivel.

Variveis Globais So variveis declaradas fora do escopo de uma funo, porm tem visibilidade (pode ser
acessada) ao contexto de uma funo sem pass-la como parmetro. Para isso declaramos a varivel e fazemos a sua
chamada logo aps com o uso do termo global. Exemplo:
Resultado: 25

Variveis estticas Podemos armazenar


variveis de forma esttica dentro de uma funo.
Significa que ao fazermos isso, temos o valor
preservado independente da ltima execuo.
Usamos o operador static para declaramos a varivel.
Exemplo:
Resultado: 10,20,30,
Observe que o valor mantido e a cada chamada
acrescentado +10, caso no exista o static o resultado
seria: 10,10,10, .

8.3. Passagem de Parmetro.


Como vimos anteriormente, podemos passar ou no parmetros em uma funo, porm existem dois tipos de
passagem de parmetros: Por valor (by value) e por referncia (by reference).
Por Valor Normalmente, a passagem de parmetros em PHP feita por valor, ou seja, se o contedo da
varivel for alterado, essa alterao no afeta a varivel original. Exemplo:

Exemplo 61

O exemplo acima mostra que passamos um valor de $a para a funo, porm temos a garantia que o valor continua
integro, ou seja, no foi modificado ao longo do cdigo.
Por Parmetro Para passarmos um valor por parmetro, simplesmente colocamos o operador & na frente
Projeto e-Jovem - Mdulo II

PHP Manipulao de Funes

63

do parmetro que queremos que o valor seja alterado, observe o exemplo abaixo:

Exemplo 62

Observe agora nesse ltimo exemplo que apenas acrescentamos o operador & no parmetro que queramos que
alterasse a varivel passada como parmetro, fazendo com que o resultado fosse a soma de 23 + 26 = 49.

Por argumentos variveis O PHP permite outras formas avanadas de passagem de parmetros, onde o valor e
a quantidade so definidas de forma automticas por meio das funes func_get_args() e func_num_args().
func_get_args() diz os valores(argumentos) passado para a funo.
func_num_args() diz a quantidade de valores passados para a funo.
Observe um exemplo mais complexo abaixo:

Resultado: nome = Alex ,nome = Sara ,nome = Maria ,nome = Bruna ,

8.4. Valor de Retorno


Toda funo pode opcionalmente retornar um valor, ou simplesmente executar os comandos e no retornar valor
algum. No possvel que uma funo retorne mais de um valor, mas permitido fazer com que uma funo retorne um
valor composto, como listas ou array's. As operaes aritmticas podem ser feita de forma direta no retorno. Observe um
exemplo onde temos uma operao direta:

Resultado:
O resultado : 139.5

Tambm podemos determinar mais de um retorno desde que eles no sejam acessados ao mesmo tempo, observe
o exemplo abaixo:

Projeto e-Jovem - Mdulo II

PHP Manipulao de Funes

64

Esse cdigo mostra de forma clara que no existe a


possibilidade de retornarmos mais de um return, caso
isso ocorresse, teramos um erro, ou no funcionamento
da funo.

8.5. Recurso.
Funo recursiva uma definio usada tanto na programao quanto na matemtica, onde, significa que uma
funo faz a chamada de si mesma na sua execuo. Um exemplo o clculo do fatorial de um nmero. Observe:

Fatorial de 5: 5! = 5*4!, 4! = 4*3!, 3! = 3*2!, 2! = 2*1! ou 5*4*3*2*1 = 120.


Exemplo:

Exemplo 63

Resultado: 120

Projeto e-Jovem - Mdulo II

PHP Manipulao de Funes

65

Exerccio Resolvido com Funes.


Realize o passo a passo de todas as operaes matemticas realizadas nas chamadas da funo calculo junto
com o resultado final.
A imagem v inculada no pode ser exibida. Talv ez o arquiv o tenha sido mov ido, renomeado ou excludo. Verifique se o v nculo aponta para o arquiv o e o local corretos.

Entendendo o algoritmo:

Uma funo chamada calculo foi definida com 3 parmetros, $n1, $n2, $n3

A funo calculo responsvel por retornar multiplicao de $n2 e $n3 e com o resultado, realizar
a soma com $n1 de acordo com a precedncia matemtica.

Na sua chamada, temos 2 funes, a linguagem PHP comea realizando os clculos das funes mais
internas, sendo assim a primeira funo que iremos analisar.

A funo calculo interna recebe 3 parmetros.

1. Numeral 1
2. Numeral 2
3. Numeral 3

Baseado na operao matemtica temos : 1 + 2*3 = 7.

Agora podemos resolver a funo calculo mais externa, podemos encontrar mais 3 parmetros

1. Numeral 5
2. Funo que retorna um Numeral 7
3. Numeral 3.
Baseado nos clculos temos: 5 + 7 * 3 = 26.
O resultado que ser impresso : 26 baseado na lgica construda.

8.6. Exerccios Propostos


EP08.1: Diga com suas palavras uma definio para funo, e como podemos declar-la em PHP.
EP08.2: Qual a diferena de variveis globais para variveis locais e como podemos defini-las em PHP?
EP08.3: O que um parmetro, e quais os tipos de parmetros em PHP?
EP08.4: Quais as funes que podemos usar para criarmos uma funo onde seus parmetros so passados pro
argumentos variveis?
EP08.5: O que um valor de retorno e qual o comando usado quando queremos retornar algo dentro de uma
funo?
EP08.6: O que recurso?
7) Crie uma funo que determine se um numero par ou mpar. E faa uma chamada dessa funo imprimindo
o resultado.
8) Crie uma funo que calcule a fatorial de um nmero.
9) Crie uma funo para determina se um numero primo ou no. Nmero primo aquele que possui dois
divisores, 1 e ele mesmo. Criem um lao de repetio e use estrutura de controle.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Funes

66

Anotaes

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

67

Captulo 9. Manipulao de arquivos e diretrios


Objetivos
Mostrar formas de manipulao de arquivos; usar os principais comandos para trabalharmos com arquivo
e diretrios; Aprender a trabalhar com leitura e escrita de arquivos, listagem, e criao de variveis buffer
de arquivos.
Assim como outras linguagens de programao, muito importante trabalharmos com manipulaes de arquivos
e diretrios em PHP, onde temos a possibilidade de manipular um arquivo ou diretrio dentro do servidor web, podendo
criar arquivos responsveis por guardar informaes referentes aquele sistema ou pgina. Essas informaes podem ser
resgatadas futuramente, ou simplesmente so informaes que ao invs de serem gravadas no bando de dados, foram
gravadas em um arquivo ou log (arquivos que grava informaes sobre o sistema, erros etc.).
Ao trabalhar com arquivos, no mnimo duas operaes devem ser realizadas: abrir e fechar o arquivo.

9.1. Criando e Abrindo um Arquivo.


O comando utilizado para criar um arquivo o mesmo que usamos para abri-lo, porm no Linux temos que dar
permisses a pasta no qual o arquivo vai ser guardado.
Abra o console ou terminal do seu sistema(Linux). Digite:

chmod 777 /var/www


O comando chmod 777 dar todas as permisses possveis na pasta www onde trabalharmos na criao de nossos
arquivos.
Para abrir ou criar um arquivo utilizaremos o seguinte comando abaixo:

fopen
Com esse comando podemos abrir um arquivo e retornar um identificador. Sua sintaxe e a seguinte:

$identificador = fopen(string_do_arquivo,modo_do_arquivo);
string_do_arquivo definido como o nome do arquivo mais a sua extenso, isso incluindo o caminho onde
esse arquivo localizado ou no, por exemplo:

/home/aluno/meu_arquivo.txt
Podemos observar um arquivo criado dentro da pasta alunos com o nome meu_arquivo.txt.
modo_do_arquivo nesse parmetro podemos determinar a forma que o arquivo vai ser aberto com os seguintes
valores:
r read, este modo abre o arquivo somente para leitura.
w write, abre o arquivo somente para escrita, caso o arquivo no exista, tenta cri-lo.
a+ append, abre o arquivo para leitura e escrita, caso o arquivo no exista, tenta cri-lo.
Existem outros modos, mas trabalharemos somente com estes.

Dica!
Para trabalharmos com arquivos sempre importante sabermos se a pasta ou o arquivo
tem permisses dentro do Linux, caso isso no acontea, o arquivo no ser criado, lido
ou at mesmo gravado.
Veja um exemplo do uso do comando fopen:
Caso o arquivo no exista, ele criando dentro da
pasta onde o arquivo *.php foi criado, ou seja, no nosso
exemplo o arquivo se chama index.php e estar dentro da
pasta www, aps executamos esse comando teremos um
novo arquivo com o nome meu_arquivo.txt.
Exemplo 64

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

68

9.2. Gravando em um arquivo.


Aps o uso do comando fopen, temos um identificador apontando para o arquivo, e com ele que podemos fazer
alteraes ou manipulaes. Podemos gravar dados dentro do arquivo com o uso do seguinte comando:

fwrite
sintaxe:

fwrite(identificador,contedo);
Identificador o parmetro retornado pelo comando fopen.
Contedo o contedo a ser gravado no arquivo.
Vale ressaltar que para podermos gravar no arquivo ele deve ter permisso dentro do Linux e alm disso ter como
parmetro w ou a+ passado para o comando fopen.
Observe um exemplo onde escrevemos (gravamos) duas linhas dentro de um arquivo de texto criado com os
comandos vistos at agora:

Exemplo:

Resultado:

Exemplo 65

O uso de \n antes da palavra rua faz com que ocorra uma quebra de linha escrevendo o resto do contedo na
linha abaixo. Aps a execuo do script (colocando http://localhost no navegador e o nome do script criado), abrimos o
arquivo de texto (meu_arquivo.txt) com um editor e percebemos o resultado final.

Observe mais um exemplo:

Resultado:

No exemplo, fizemos a chamada do comando fwrite trs vezes e escrevemos a cada chamada um valor diferente
concatenando com \n.

9.3. Fechando um arquivo.


At agora trabalhamos com o comando fopen e no fechamos o arquivo, simplesmente abrimos e executamos os
demais comandos. Isso faz com que, caso tenhamos de usar o mesmo arquivo em outra parte do cdigo, ele no poder
ser utilizado, pois para isso preciso fech-lo para ele poder ser aberto novamente em outra parte do cdigo. Para isso
usamos o seguinte comando:

fclose
Sintaxe:

fclose(identificador);

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

69

Exemplo:
Toda vez que abrimos um arquivo com
fopen, devemos fech-lo com o comando fclose
conforme o exemplo ao lado.

Exemplo 66

9.4. Lendo um arquivo.


Aps abrirmos um arquivo, outra operao que podemos efetuar a leitura do contedo existente no arquivo.
Essa operao feita linha por linha, onde podemos resgatar valores existentes de acordo com a chamada do comando
fread ou o ndice do array criado pelo comando file.

File
L um arquivo e retorna um array com todo seu contedo, de modo que a cada posio do array representa uma
linha do arquivo comeando pelo ndice 0.

Sintaxe:

$array = file(string_do_arquivo);
string_do_arquivo da mesma forma que definida no comando fopen, usa-se o caminho com o nome do
arquivo ou simplesmente o nome do arquivo caso ele exista na mesma pasta onde o arquivo PHP que contm o comando
foi criado.

Exemplo:

Resultado:

Exemplo 67

Nesse exemplo utilizamos o arquivo anterior onde foi escrito trs linhas, porm efetuamos a leitura somente da
linha 1 (ndice 0) e linha 2 (ndice 1). Oura forma percorrer o array usando um foreach(), dessa forma podemos ler todas
as linhas existentes no arquivo, veja:

Exemplo:

Resultado:

9.5. Copiando, renomeando e Apagando um Arquivo


Em PHP tambm possvel copiarmos um arquivo de uma origem para um determinado destino, como tambm
apagar esse arquivo. Para isso usamos os seguintes comando:

copy
Cria um arquivo para outro local/nome. Retornando um valor booleano verdadeiro (true) caso a cpia tenha
ocorrido sem eros ou falhas, caso contrrio retorna falso(false). Sintaxe:

copy(string_origem,string_destino);

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

70

Exemplo:

Exemplo 68

Caso tudo ocorra corretamente, o resultado apresentado no navegador Cpia efetuada, e ser criado uma
cpia dentro da pasta com o nome meu_novo_arquivo.txt. Vale lembrar que podemos tambm passar o caminho
completo para onde deve ser copiado, como por exemplo:

/home/aluno/meu_novo_arquivo.txt
Para renomearmos um arquivo usamos:
rename
Sintaxe: rename(nome_do_arquivo, novo_nome);
Para apagarmos um arquivo usamos:
unlink
Sintaxe:
unlink(nome_do_arquivo);
Observe um exemplo, onde renomeamos o arquivo meu_novo_arquivo.txt para arquivo_texto.txt e
apagamos o arquivo meu_arquivo.txt:
Aps executarmos isso
no navegador, percebemos as
mudanas ocorridas dentro do
diretrio.

Exemplo 69

9.6. Manipulando Diretrio.


Alguns comandos bsicos so necessrios para manipulao de diretrios, mostraremos apenas como obter o
diretrio atual, como criar e apagar um diretrio, para isso usamos os seguintes comandos:

mkdir
Cria um diretrio de acordo com a localizao e o modo. Sintaxe:

mkdir(string_localizao, int_modo);
string_localizao definido como o caminho com o nome do diretrio, ou somente o nome.
int_modo onde definimos as permisses de acesso(como se fosse o chmod do Linux).
Dessa forma podemos criar um diretrio e j atribuirmos as permisses a ele.

getcwd
Retorna o diretrio corrente, este comando usado caso precise obter o diretrio onde o arquivo PHP que
possui este comando est guardado.
Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

71

Sintaxe:
getcwd();
rmdir
Apaga um diretrio.

Sintaxe:
rmdir(nome_diretrio);
Observe o exemplo envolvendo os trs comandos abaixo:

Exemplo:

Resultado:

Observe que o comando getcwd obtm o caminho completo de onde o arquivo PHP que contm o cdigo-fonte
estar guardado.

9.7. Interaes com o Browser


PHP tambm permite interagir com informaes do browser automaticamente. Isso pode ser muito til quando
queremos coletar informaes sobre o cliente, como por exemplo, o tipo de browser (navegador), ou qual o sistema
operacional, dentre outras informaes.
O cdigo a seguir mostra informaes sobre o browser do usurio:

Comando $_SERVER[$HTTP_USER_AGENT] tem como finalidade retornar informaes do cliente que est
acessando o arquivo PHP pelo browser, abaixo um exemplo desse retorno:

J vimos que o comando HTTP_USER_AGENT retorna uma string com vrias informaes, com isso
podemos utilizar a funo strpos(), que tem como finalidade procurar valores de uma string menor dentro de uma string
Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

72

maior. Podemos desta forma otimizar o nosso cdigo. Sintaxe:

strpos( string_maior , string_menor );


Observe outro cdigo com o uso da funo strpos() :

Exemplo 70

Nesse exemplo procuramos as palavras Firefox e Chrome dentro do valor retornado pelo comando
$_SERVER[HTTP_USER_AGENT]. Dessa forma, podemos tratar o resultado comparando-o com 0, ou seja, se a
palavra existir, significa que seu valor diferente de 0. O resultado impresso na tela de acordo com o navegador do
cliente.
Exemplo de requisio HTTP_USER_AGENT:

9.8. Cookies
Cookies so mecanismos para armazenar e consultar informaes. Eles so armazenados na mquina do cliente
que acessa ao servidor php, e possui vrias atribuies que so definidas pelo programador, por exemplo: imagine uma
loja virtual, onde o cliente colocou em seu carrinho de compras vrios produtos, mas por algum motivo ele no concluiu
a compra, tendo que desligar a mquina que foi utilizada para fazer o acesso. No dia seguinte o cliente entra no mesmo
site e percebe que todos os itens ainda esto no carrinho de compra do jeito que ele deixou, esperando a concluso da
compra. Nesse exemplo, podemos perceber que as informaes foram gravadas na mquina do cliente atravs dos cookies,
que so simplesmente arquivos gerados pela pgina acessada dentro de alguma pasta do navegador que existe
exclusivamente para esses arquivos.
O PHP atribui cookies utilizando a funo setcookie que deve ser utilizada antes da tag <html> numa pgina.
Alm disso o uso de cookies no recomendado quando se trata de informaes sigilosas. Os dados dos cookies so
armazenados no diretrio de arquivos temporrios do visitante, sendo facilmente visualizado por pessoas mal
intencionadas.
Alm da opo aceitar cookies que pode ser desativada a qualquer momento pelo visitante. Mas em cada
navegador essa opo pode mudar de nome. Observe o comando abaixo:
setcookie
Sua sintaxe possui muitos parmetros, abaixo est representada todos os valores que podem ser atribudo ao
setcookie, mas vale ressaltar que no utilizaremos todos eles, somente os principais, veja sua sintaxe.

Setcookie(nome_do_cookie,seu_valor,tempo_de_vida,path,
domnio,conexo_segura);

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

73

Onde na tabela abaixo temos a descrio de cada atributo:

Atributo

Descrio

nome_do_cookie o nome que, posteriormente, se tornar a varivel e o que o servir de referncia para
indicar o cookie.
seu_valor

o valor que a varivel possuir. Esse valor pode ser de todos os tipos.

seu_valor

o tempo, em segundos, que o cookie existir no computador do visitante. Uma vez


excedido esse prazo o cookie se apaga de modo irrecupervel. Se esse argumento ficar
vazio, o cookie se apagar quando o visitante fechar o browser.

path

Endereo da pgina que gerou o cookie automtico

domnio

Domnio ao qual pertence o cookie automtico

conexo_segura Indica se o cookie dever ser transmitido somente em uma conexo segura HTTPS.
Observe um cdigo onde criamos um cookie:

Exemplo 71

Criamos ento uma string, logo aps a funo setcookie recebendo como parmetro somente o seu nome e o
valor a ser gravado.
Usaremos o navegador Mozilla Firefox para visualizarmos o cookie criado, para isso basta digitar o endereo
http://localhost na url, e logo aps ir na opo: Ferramentas Propriedades da pgina Segurana Exibir cookie.
Lembre-se de criar o cdigo acima primeiro e depois fazer a chamada pelo navegador de sua maquina. Se tudo ocorrer
corretamente dever aparecer a seguinte tela:
Veja que outras informaes como caminho,
enviar, e validade no foram especificados, porm
podemos determin-los na hora da criao do cookie
dentro do cdigo php.
Mostraremos agora um cdigo onde
atribumos o tempo de vida do cookie, para isso
Nome do Cookie
devemos capturar o tempo com a funo time() atual e
som-lo ao tempo que queremos em segundos, isso faz
Valor do cookie
com que o cookie exista na mquina do cliente de
acordo com a quantidade de tempo determinado pelo
programador, observe um exemplo onde atribuirmos
mais esse parmetro o funo setcookie:

Exemplo:

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

74
Esse cookie tem a validade de 3600 segundos,
ou seja 1 hora, com isso conclumos que o navegador
fez seu acesso as 14:47:36. Isso muito importante
para a programao dos cookies. Se quisermos que ele
exista por um determinado tempo, temos que calcular
tudo em segundos da seguinte forma:

Data de vencimento do
cookie,
Aps ela ele deletado

$tempo = time()+(3600*24*7);
Esse cookie tem seu tempo de vida de 7 dias,
pois 3600 segundos = 1 hora, 24 horas = 1 dia e 7 *
horas_de_um_dia resulta em 7 dias.

Exemplo:

Validade:
Validade de 7 dias a partir do dia 12.

Acessando um cookie:
Para acessarmos o valor gravado em um cookie bem simples, basta utilizar o comando
$_COOKIE['coloque_aqui_o_nome_do_cookie'], exemplo:

Resultado: valores a serem gravados


Observe agora um exemplo de um cdigo utilizado para contar as visitas de um site usando cookie:

O resultado de acordo com a quantidade de vezes que o cliente entrou no site ou atualizou o mesmo.

9.9. Sesso
Sesses so mecanismos muito parecidos com os tradicionais cookies. Suas diferenas so que sesses so
armazenadas no prprio servidor e no expiram a menos que o programador queira apagar a sesso.
As sesses so mtodos de manter (ou preservar) determinados dados a mant-los ativos enquanto o navegador
do cliente (o internauta) estiver aberto, ou enquanto a sesso no expirar (por inatividade, ou porque em algum ponto
voc mandou que ela expirasse).
Para criarmos uma sesso utilizaremos a funo abaixo:
Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

75

Dessa forma estamos iniciando um conjunto de regras. Essa funo deve


sempre estar no incio do cdigo-fonte, com exceo de algumas regras.

Agora trabalharemos com essa sesso, primeiro podemos determinar o tempo de vida da sesso com o seguinte
comando:
Neste caso, session_cache_expire vem antes de session start.
Porque primeiro ele avisa que a sesso, quando iniciada, deve expirar em
5 minutos, e depois a inicia.

Com o comando $_SESSION podemos gravar valores na sesso, veja um exemplo:

Criamos uma sesso com o nome minha_sessao (no uma boa prtica de programao usar acentos em nomes
de variveis ou qualquer outra nomeao) e atribumos a ela o valor gravado na varivel string $var. Essas informaes
ficam gravadas no servidor, logo aps podemos resgatar o valor da seguinte forma:

Observe que o comando $_SESSION tem seu tratamento igual a uma varivel do tipo Array. Para resgatar o valor
da sesso, basta fazer a chamada do comando passando o nome da sesso, no caso minha_sessao. O exemplo anterior
foi adicionado em um outro arquivo, por esse motivo temos que chamar novamente o comando session_start(), para
trazermos ao arquivo todas as regras usadas em sesso no PHP.
Abaixo temos um exemplo com o uso da funo isset(), que verifica se uma varivel existe ou no, retornando
um valor booleano( true ou false ):
O resultado de acordo com a existncia ou
no da sesso.

Para desativarmos uma sesso podemos utilizar dois tipos de mecanismos: um deles o uso da funo
session_destroy() que tem como finalidade destruir todas as sesses criada pelo usurio, a outra forma desalocarmos a
sesso criada com o uso da funo unset().
Uso de session_destroy():

Uso de unset():
Usamos unset() quando queremos desalocar uma determinada sesso, imaginamos que o usurio ao acessar uma
determinada pgina, tenha criado vrias sesses com nomes diferente. Os nomes das sesses so determinada pelo
programador, porm ao clicar em um link, o mesmo tem que destruir a seo escolhida. O exemplo abaixo destri a sesso
especificada:
Dessa forma destruirmos a sesso minha_sessao,
porm se existirem outras, elas ainda continuaro ativas.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

76

9.10. Requisio de Arquivos


Assim como em muitas outras linguagens de programao tambm possvel incluir dentro de um script PHP
outros arquivos contendo outras definies, constantes, configuraes, ou at mesmo carregar um arquivo contendo a
definio de uma classe. Para isso podemos usar os seguintes comandos:

include<arquivo>:
A instruo include() inclui e avalia o arquivo informado. O cdigo existente no arquivo entram no escopo do
programa que foi inserido, tornando-se disponvel a partir da linha em que a incluso ocorre. Se o arquivo no existir,
produzir uma mensagem de advertncia (warning).
Exemplo onde temos dois arquivos:
cdigo do, arquivo_teste.php
cdigo do arquivo index.php

Resultado:

Nesse exemplo podemos notar que o cdigo existente no arquivo_teste.php foi inserido dentro do arquivo
index.php, tendo como resultado a execuo dos dois cdigos como se fossem apenas um, esse recurso muito utilizado,
pois podemos incluir at mesmo cdigos de pginas inteiras em um arquivo.

require<arquivo>:
Comando muito parecido ao include. Difere somente na manipulao de erros. Enquanto o include produz uma
warning, o require uma mensagem de Fatal Error caso o arquivo no exista.

Sintaxe:

require 'nome_do_arquivo.php';

include_once<arquivo>:
Tem funcionalidade semelhante ao include, a diferena que caso o arquivo informado j esteja includo, esse
comando no refaz a operao, ou seja, o arquivo includo apenas uma vez. Este comando til para garantir que o
arquivo foi carregado apenas uma vez. Caso o programa passe mais de uma vez pela mesma instruo, evitar
sobreposio de arquivo.

Sintaxe:

include_once 'nome_do_arquivo.php';

require_once<arquivo>:
Tem funcionalidade parecida com o comando require. A diferena justamente caso o arquivo j tenha sido
includo no programa, pois ele no carrega novamente o cdigo. muito semelhante ao include_once, evitando
redeclaraes ou sobreposies, porm a mensagem exibida caso o arquivo no exista de Fatal Error.

Sintaxe:

require_once 'nome_do_arquivo.php';

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

77

9.11. Tratamentos de erro


So muito comuns erros na programao PHP, que podem partir do programador como pessoa fsica, do servidor,
ou outros fatores envolvidos que juntos venham ocasionar em um erro. Existem quatro tipos de erros no PHP para indicar
a gravidade do erro encontrado ou ocorrido. Eles so:

1.
2.
3.
4.

Erros de funes (function errors).


Avisos (warnings).
Erros de processamento (parser error).
Observaes (notice).

Os programadores devem prestar muita ateno nas mensagens de erro, afinal nenhum programador quer por no
ar um sistema que quando o primeiro visitante entra aparea uma mensagem de erro. Para evitar essas inconvenincias
use sempre um @ antes de cada chamada as funes. Se a opo track_errors no arquivo php.ini estiver habilitada,
a mensagem de erro poder ser encontrada na varivel global $php_errormsg. Para exibir a mensagem direta no
navegador procure ativar a opo display_errors, as funes sero ativadas para On(ligada) ou Off (desligada).
O arquivo php.ini no linux geralmente fica na pasta: /etc/php5/apache2/php.ini .
Veja o Exemplo:

Imprimindo a mensagem de erro:

Resultado:

Mensagem de erro com a opo display_errors = On do php.ini ativada:


Warning: strtolower() expects exactly 1 parameter, 0 given in /var/www/index.php on line 2.
O erro mostra que devemos passar um parmetro para a funo strolower() na linha 2, mas podemos ignorar o
erro usando o @.

Essa funo deixaria todos os caracteres em minsculo, mas seu erro foi ignorado, no exibindo nenhuma
mensagem de erro.

Lembrando: podemos utilizar tag's curtas no PHP <? ?> em vez de tags normais <?php ?>,
mas isso vai depender da configurao do PHP (php.ini), em alguns casos no funciona.Um vendedor
de cestas bsicas precisa de um sistema ao qual ele possa digitar quantas cestas bsicas ele vendeu e
qual o salrio final que ele ir ter:

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

78

Exerccio Resolvido.
Um vendedor tem um salrio fixo de R$ 500,00 mais um bnus de 10% do valor de cada cesta bsica vendida .
Sabe-se tambm que cada cesta bsica custa R$30,00.
Crie cdigo PHP que ir calcular e mostrar na pgina qual ser o salrio do ms.
OBS: Imagine que voc j tem um formulrio que tm um campo chamado : qtdCestasV que ir enviar essa
informao via POST para uma salarioVendedor.php .
Crie um cdigo PHP para solucionar o problema do vendedor.

9.12. Exerccios Propostos


EP09.1: O que manipulao de arquivos?
EP09.1: Observe o cdigo-fonte abaixo:
1 <?php
2 $arquivo = fopen("all.txt","w");
3 fwrite($arquivo, "oi tudo bem!");
4 fclose($arquivo);
5 ?>
a) Que tipo de arquivo gerado na linha 2 e aonde o mesmo criado?
b) Que o parmetro w da linha 2 do cdigo representa?
c) Qual a finalidade do comando fwrite da linha 3 do cdigo?
d) Qual o principal motivo de fecharmos o arquivo com o comando fclose da linha 4 do cdigo?
Crie um arquivo de texto chamado frases.txt usando o comando fopen, e responsa as questes 3,4,5,6,7
EP09.1: Grave uma mensagem dentro do arquivo criado.
EP09.2: Com base no arquivo criado, utilize o comando fwrite para ler o mesmo imprimindo na tela do
navegador o contedo do arquivo.
EP09.3: Abra o arquivo frases.txt com um editor de texto, adicione cinco palavras, cada uma em uma linha
diferente, aps isso utilize o comando file, para efetuar a leitura do arquivo, e imprima na tela a primeira e ultima palavras
com o comando echo.
EP09.4: Crie uma cpia do arquivo renomeando o novo arquivo para palavras.txt.
EP09.5: Agora
EP09.6: Crie um diretrio com o comando mkdir e copie o arquivo palavras.txt para a pasta criada e apague
o anterior, tudo com comandos PHP.
EP09.7: Crie um cdigo que imprima na tela todo o cominho de pastas onde se localiza o arquivo palavras.txt.
EP09.8: Crie um formulrio HTML com os seguintes campos:
nome, endereo, e-mail, senha, e o boto enviar.
EP09.9: Utilize o mtodo Get para visualizar os dados do array na URL do navegador ao clicar no boto enviar.
EP09.10: Qual a diferena do mtodo POST e GET?
EP09.11: Como podemos receber dados via mtodo GET? Exemplifique.
EP09.12: Como podemos receber dados via mtodo POS?. Exemplifique.

Projeto e-Jovem - Mdulo II

PHP Manipulao de Arquivos e diretrios

79

EP09.13: Crie um arquivo chamado dados.php, nesse arquivo dever conter os seguintes requisitos:
-Os dados do formulrio da questo 1 dever ser enviado para esse arquivo via metodo POST.
-O aquivo dados.php dever conter cinco variveis, cada uma para determinado campo, exemplo:

$nome = $_POST['nome'];
-Os valores dever ser impresso na tela.
EP09.14: Qual a finalidade do comando $_SERVER [HTTP_USER_AGENTE]?
EP09.15: Crie um cookie gravando nele o seu nome, logo aps abra o Firefox e Exiba o valor gravado.
EP09.16: Crie um arquivo chamado criar_sessao.php, utilize comando PHP para cria uma seo com a
durabilidade de 3 minutos e adicione o valor sesso ativa.
EP09.17: Crie um novo arquivo chamado ler_sessao.php para verificar se a sesso criada na questo 9 existe
ou no. Utilize o comando $_SESSION para ler o valor nela contido e imprima na tela.
EP09.18: Quais os possveis erros existentes em PHP e qual a definio de cada um deles?

Anotaes

Projeto e-Jovem - Mdulo II

PHP UML

80

Captulo 10. UML


10.1. Introduo
A partir desse capitulo, iremos nos focar em POO (Programao Orientada a Objeto) com PHP. Para um melhor
aprendizado na implementao do cdigo seguindo paradigmas da POO, estaremos em paralelo modelando a estrutura
em Diagrama de Classes. Entenderemos como instalar, configurar e qual a sua importncia no processo de aprendizagem
a seguir.
UML significa Unified Modeling Language ou seja, Linguagem de Modelagem unificada. Com ele,
modelamos nosso cdigo com objetivo de documentar e visualizar melhor o projeto. Apesar desse procedimento ser feito
em Papel e caneta, existem vrias ferramentas que tratam a visualizao e criar de UML de forma mais rpida e prtica.
Para modelagem do nosso cdigo, usaremos um Plugin do NetBeans, a seguir estaremos aprendendo como realizar a
instalao e configurao.
Para realizar a instalao simples, basta ir em Ferramentas > Plugins e buscar por UML. Este Plug-in est
disponvel livremente a partir da verso 6.7.
Se ele no estiver disponvel, voc ter que adicionar aos repositrios do Netbeans.

10.1.1.

Instalando UML Netbeans

Abra seu NetBenas v em Ferramentas > Plugins > Configuraes > instalar e adicione esse link:
http://dlc.sun.com.edgesuite.net/netbeans/updates/6.9/uc/m1/dev/catalog.xml
Esse link compatvel com as verses superiores a verso 6.9, foi testado at a verso 7.3 se voc tiver uma
verso inferior a 6.9, esse link poder no dar certo, caso isso acontea, procure um link xml compatvel com a sua
verso.
Com o repositrio instalado, basta ir na Aba de Plugins Disponveis que o pacote UML estar disponvel para
instalao.

10.2. Tipos de Diagramas


Antes de comearmos a trabalhar com UML, precisamos saber quais os tipos de diagramas. Podemos desenvolver
e qual a utilidade de cada uma dentro de um projeto.

10.2.1.

Diagrama de Atividade

Um diagrama de estado especial, onde a maioria dos estados estado de ao, e a maioria das transies ativada
por concluso das aes nos estados de origem.

O objetivo estudar os fluxos dirigidos por processamento interno, descrevendo as atividades desempenhadas
em uma operao.

10.2.2.

Diagrama de Sequncia

Apresenta a interao de tempo dos objetos que participam na interao.

O diagrama de sequncia mostra a colaborao dinmica entre um nmero de objetos, e visa mostrar a sequncia
de mensagens enviadas entre objetos.

10.2.3.

Diagrama de Caso de Uso

Casos de uso descrevem funcionalidades do sistema percebidas por atores externos.

Um ator uma pessoa (ou dispositivo, ou outro sistema) que interage com o sistema.

10.2.4.

Diagrama de Classe

Denota a estrutura esttica de um sistema. As classes representam coisas que so manipuladas por um sistema.
Esse diagrama considerado esttico porque a estrutura de classes vlida em qualquer ponto do ciclo de vida
do sistema.

Neste Curso aprenderemos como trabalhar com Diagrama de Classe, pois esse diagrama bem prximo da
criao e estruturao do que iremos aprender nos prximos captulos.

Projeto e-Jovem - Mdulo II

PHP UML

81

10.3. Abrindo o Projeto


Criando um Novo Projeto de Diagrama

Nomeando Projeto de Diagrama

Escolhendo Diagrama de Classe

Projeto e-Jovem - Mdulo II

PHP UML

82

Aqui encontrando os diagramas relatados no comeo do captulo.


Entrando no Diagrama criado, podemos visualizar no lado direito da IDE Netbeans, um boto chamado Paleta.
Ele ser responsvel por abrir uma aba onde podemos montar os pacotes de classe. Veja a interface da aplicao:

Se sentiu alguma dificuldade na configurao da ferramenta UML no netbeans, isso no um problema, existem
outras ferramentas livres que realizando os mesmos Processos no linux. So exemplos de outroas aplicaes que
trabalham com UML Dia, Visual Paradigm e Umbrello.

Projeto e-Jovem - Mdulo II

PHP POO com PHP

83

Captulo 11. POO com PHP


11.1. Introduo
Iremos aprender como trabalhar com a linguagem PHP orientado a objeto. Aconselhamos que estude antes
algoritmos bsicos de lgica de Programao em PHP e construo HTML/CSS, pois teremos que est afiados nos
conceitos estruturais para continuar a nossa caminhada em assuntos mais aprofundados. Continuaremos usando a IDE
NETBEANS para nos ajudar na organizao dos arquivos e tratamento do cdigo em PHP. Porm se desejar usar outra
IDE no ir influenciar no andamento do aprendizado nessa apostila.
Programao Orientado a Objeto constitui em um conjunto de regras de programao. Estudamos anteriormente
como programar de forma estruturada, inicivamos a execuo do cdigo e finalizando todos os processos na mesma
pgina. Com a Programao Orientada a Objetos podemos usar algoritmos j feitos por algum, ou criar novos algoritmos
interagindo com os que j foram desenvolvidos por algum com objetivo de resolver problemas mais complexos gerando
um novo produto final. Vamos fazer uma comparao no o dia a dia para entendermos melhor .

Fbrica de Computadores.

Servio de Digitao.

Relatrio

Final.

Imagine que voc trabalha com digitao de textos. Voc no


precisa saber como o computador foi criado, nem como o
software que usa para digitar o texto foi desenvolvido. O seu
objetivo usar desses recursos e criar um novo produto final.
Um relatrio de texto.

A Programao orientado a objeto uma metodologia que os programadores utilizam com objetivo de atingir
alguns requisitos importantes na construo de um bom programa ou site como:
Organizar o cdigo : Com o nosso cdigo dividido, podemos facilmente dar manuteno ou encontrar algum
erro mais facilidade.
Reutilizao do cdigo: No precisamos reescrever todo o cdigo, quando necessitamos dele novamente.
Manter Padres : Utilizao de um mesmo padro conceitual durante todo o processo de criao do cdigo.
At o final do curso iremos aprender e trabalhar nessa metodologia. Ento, bastante ateno nesse e nos prximos
captulos.

Projeto e-Jovem - Mdulo II

PHP POO com PHP

84

11.2. Classe, Atributos e Mtodos


Como estamos trabalhando com POO (Programao Orientada a Objeto), o nosso objetivo final construir um
Objeto que tenha suas caractersticas. O Objeto criado a partir de uma Classe. Ela ir servir como modelo para criao
do Objeto. Vamos fazer uma comparao do dia a dia para entendermos melhor .

Um prdio no construdo de qualquer forma, o pedreiro ir construir o prdio de acordo com as


instrues da planta. Como tamanho do banheiro, quantos quartos, onde estar a porta de entrada. A planta
do prdio, seria uma Classe que serve como referncia na construo do prdio que um Objeto.

Iremos aprender, como criar uma Classe, ou seja, referencia para futuros Objetos. Imagine que queremos
criar um Pessoa. Para poder criar uma Pessoa teremos antes que fazer 2 perguntas bsicas.

O que poderei
ter? O que
poderei fazer?

Anote tudo que uma pessoa pode ter, como nome, data de
nascimento, RG, CPF, etc. Para a resposta da primeira pergunta, ns
temos o que chamamos de Atributos da classe Pessoa

Anote Tudo que uma pessoa pode fazer, ou seja, suas aes, como
acordar, dormir, falar o seu nome, etc. Para a resposta da segunda
pergunta ns temos o que chamamos de Mtodos da classe
Pessoa
Com o conceito de Classe, atributos e mtodos podemos
adaptar as nossas necessidades para uma classe do Tipo
Usurio, por exemplo. Veja a seguir como seria essa
adaptao

Exemplo:
Imagine que iremos criar um usurio para o nosso site,
seguindo a mesma linha de raciocnio temos as seguintes
caractersticas e aes de uma classe Usurio

Projeto e-Jovem - Mdulo II

PHP POO com PHP

85

Exerccio rpido.

Crie no papel e caneta, uma classe para : Pessoa , Carro, Bicicleta e Computador.

Para cada classe criada, faa a pergunta: O que minha classe dever ter ? O que ele poder fazer ?.
Organize essas informaes em atributos e mtodos e esteja pronto, para criar documentao UML e implementar um
cdigo nos prximos tpicos.

11.3. Criando estrutura de Classe pelo Diagrama


Na direita, clicando em Class, clique no palco principal que ser gerado uma nova classe indefinida. Para alterar
a Classe, basta clicar em Create Atributes para criar os atributos, e Create Operation para criar os mtodos,
lembre-se que para o diagrama, primeiro vem o nome da varivel ou mtodo, em seguida vem o seu tipo:
Exemplo: nome - String
Veja como criar uma classe simples com o tipo, pessoa:

Dessa forma podemos criar qualquer classe com os seus atributos e mtodos de forma a poder visualizar melhor
a estrutura do projeto.
No prximo tpico estaremos realizando o Processo de criao com classe em linas de cdigo, procure sempre
fazer um link do que aprendemos com o que estamos codificando quando criarmos a classe, atributos e mtodos na
linguagem PHP.

11.4. Construindo uma classe em PHP.


Antes de criamos uma classe, vamos organizar essa classe dentro de uma pasta dentro do Projeto e cham-la de
class.

Projeto e-Jovem - Mdulo II

PHP POO com PHP

86

Na pasta class, criaremos uma Classe PHP. E cham-la de usuario.class.php

Com a classe criada, temos que criar os atributos e mtodos.

Atributos:

Nesse momento precisamos criar as variveis que faro parte


da estrutura bsica da classe usurio. O encapsulamento private foi
usado para proteger essas variveis. Lembrando que dependendo da
situao, podemos deix-las como protected,ou public. O
encapsulamento tambm dever ser usado nos mtodos, veremos a
seguir.

Mtodos

Para o nosso usurio, teremos tambm que usar um mtodo especial, chamado de mtodo mgico. Esses
mtodos tm nomes e funes especificas e comeam com __ (2 underlines). O mtodo mgico que iremos trabalhar
se chama : __construct. Este mtodo um construtor da classe, ou seja, a nossa classe s poder existir se satisfazer
plenamente a chamada do construtor. Vamos levar em considerao que para um usurio existir, ele precise
obrigatoriamente de um nome de usurio e uma senha para alimentar os seus atributos, pois so os valores bsicos para o
usurio logar-se. Ento incluindo no cdigo, temos:

Nome do Mtodo
(Mtodo Mgico)
Parmetros

ATENO: Quando precisamos chamar os atributos dentro da classe usamos o $this-> assim o
PHP ir fazer as devidas atribuies como mostra na imagem acima.
Veremos mais alguns mtodos mgicos no prximo captulo. Com o nosso construtor feito, vamos para os demais
mtodos. Temos algumas nomenclaturas de bons costumes para mtodos, veja uma delas na tabela abaixo:

Mtodo Descrio
Sets

Mtodos para alterar atributos de uma classe

Gets

Mtodos para retornar um valor de atributo da classe

Projeto e-Jovem - Mdulo II

PHP POO com PHP

87

Crie na classe usuario os metodos GET e SET de todos os atributos que esto contido nela:

ATENO:
Perceba que o mtodo setId, pede um valor como parmetro, esse parmetro modifica o seu atributo. O
Mtodo getId no ir precisar de parmetro nenhum, pois sua funo apenas retornar o valor do atributo.
Iremos ver nos prximos tpicos mais afundo sobre esse assunto.

11.5. Encapsulamento
Encapsulamento uma forma de proteo do nosso cdigo, existem informaes que queremos que algumas
classes vejam, outras no. Imagine a sua conta de e-mail. A conta do seu usurio poder ser vista por outras pessoas, pois
ele ir identificar o seu e-mail dos demais, porm a sua senha algo privado onde s voc poder ter acesso a ela. Da
mesma forma que queremos mostrar ou proteger os nossos dados, uma classe tambm tem as mesmas necessidades e
podemos defini-las atravs do encapsulamento.
public - ou pblico, qualquer classe pode ter acesso
private - ou privado, apenas os mtodos da prpria classe pode manipular o atributo
protected - ou protegido, pode ser acessado apenas pela prpria classe ou pelas suas subclasses.
Por boas prticas de programao, os atributos da nossa classe Usurio estar como private.

11.6. Mtodo de armazenamento de Atributos(Set)


Estes mtodos so responsveis por armazenas valores nos atributos, por segurana os atributos esto
encapsulados como private nos impedido acess-los diretamente, ento precisamos de mtodos internos classe para a
realizar essa operao, veja um exemplo de como podemos alterar o atributo id da nossa classe.

Perceba que por padro de nomenclatura, os mtodos que tem essa funo, comea com o termo set seguido
pelo atributo que queremos alterar. Podemos receber outros objetos como parmetro.

Projeto e-Jovem - Mdulo II

PHP POO com PHP

88

11.7. Mtodo de Retorno de Atributos(Get)


Os mtodos podem realizar uma ao interna e podem influenciar em outros mtodos atravs do seu Retorno.
Ele pode representar os tipos primitivos de dados que conhecemos como : int, string, double, float, char, boolean por
exemplo, um outro objeto ,ou pode retornar vazio, simbolizado por void. Os mtodos que tiver retorno, dever ter
dentro do seu corpo um return que ir representar o resultado final da minha operao.

Veja o exemplo abaixo:


Sabemos que o id uma
atributo privado do tipo numrico
que no poder ser retornado em
outras classes ou pginas, ento
criamos um mtodo public para verificar o valor desse atributo e
retorn-lo para outras classes ou para a nossa pgina WEB.
Perceba que por padro de nomenclatura, os mtodos que tem essa funo, comea com o termo get seguido
pelo atributo que queremos alterar. Podemos tambm retornar outros objetos.

11.8. Estanciando a classe criada.


Agora que criamos a classe, vamos criar um arquivo chamado testeUs.php e construir um determinado usurio.
Para usar a classe que est em uma outra pgina PHP, primeiro temos que incluir o arquivo. Como visto em captulos
passados, podemos usar 4 mtodos bsicos:
include: mtodo usado para inserir recursos externos pgina.
require: faz o mesmo procedimento que o include, porm se a pgina que for includa der erro, toda a pgina
no ser aberta. Usamos esse mtodo para proteger alguns dados dos usurios.
include_once: faz o mesmo procedimento que o include porm inclui APENAS a pgina referenciada.
require_onde: faz o mesmo procedimento que o require porm inclui APENAS a pgina referenciada.
Estes mtodos inclui na pgina cdigo php ou pginas html por exemplo. Veja como estanciar um objeto
usurio na prxima pgina:

ATENO: Perceba que tambm usamos o sinal -> para chamar mtodos das classes.
Ento finalmente entrando no navegador temos o seguinte
resultado da imagem ao lado:

Projeto e-Jovem - Mdulo II

PHP POO com PHP

89

Podemos criar mtodos que no sejam do tipo get / set. Podemos criar mtodos para fazer qualquer operao
com o que foi aprendido em todo o nosso curso de PHP, como inserir operaes matemticas, estruturas
condicionais,estruturas de repetio, etc... Veja os exemplos abaixo :

Parabns, os princpios bsicos para a criao de classes, atributos, mtodos, construtores e como cham-los est
feito. Se ainda sente alguma dvida em relao a algum dos recursos estudados, sugerimos volte a estudar esses conceitos
e como aplica-los na apostila ou em outros materiais.

11.9. Variveis Estticas


Variveis estticas so valores nicos para qualquer objeto de uma determinada classe. Isso quer dizer que se
uma determinada varivel esttica for alterada em uma classe, essa varivel ter o mesmo valor para todos os outros
objetos da mesma classe. Normalmente usamos esse mtodo todos os objetos de uma mesma classes tem uma varivel
que ter que ser idntica. Imagine a seguinte situao.

A Classe Pessoa poder ter um atributo chamado: ondeVivo = Planeta Terra


Todos moramos em um planeta que conhecemos por Planeta Terra.
Porm pesquisas recentes mostram que o nome do nosso planeta
deveria ser chamado de Planeta gua, pois o fato de existir
gua, nos torna diferente dos demais planetas.

Se tivermos 300 objetos estanciados do tipo pessoa, como alterar ondeVivo = Planeta gua em todos os
objetos em uma nica instruo sem precisar percorrer todos eles?
Basta criar uma varivel esttica no atributo ondeVivo, assim se alteramos em 1 dos objetos essa varivel,
todas
elas
sofrero
a
mesma
alterao.
Veja
como
cri-lo:

Projeto e-Jovem - Mdulo II

PHP POO com PHP

90

Perceba que para criar uma varivel esttica, basta adicionarmos o termo static nela. Para acessarmos a
variveis nos mtodos precisamos usar o termo : self::. Faa o teste estanciando mais de um objeto do tipo pessoa,
chame o mtodo setOndeVivo() em um dos objetos. Em seguida, procure ver nos demais objetos instanciados as
alteraes
feitas
pelo
mtodo
getOndeVivo.

11.10.

Mtodos Estticos

Mtodos estticos so usados para criar classes que no precisam ser estanciados. Usamos esses mtodos quando
queremos fazer algumas de verificao de validade, CPF, RG, registros de login e senha, podemos usar tambm para
estabelecer algumas sequncia de TAGS desejveis dentre vrias outras funes, veja como construir uma fila de Artigos
em uma pgina simples usando mtodos estticos:

Para criar um mtodo esttico, basta adicionarmos o termo static no mtodo. Ao invs de estanciar essa classe,
voc poder chamar diretamente com nomedaClasse::nomeDoMetodo. Neste exemplo, o nome da classe listArt
ento vamos cham-lo com listArt::separadorArtigos(numero) veja como implement-lo:

O resultado ser este:

ATENO : Mtodos estticos podem ter atributos, Contanto que este


atributos tambm sejam estticos estticos. Variveis internas ao mtodos
podero ser usados sem problemas

Projeto e-Jovem - Mdulo II

PHP POO com PHP

11.11.

91

Exerccios Propostos:

EP11.1: Lembra das classes criadas : Pessoa, Carro, Bicicleta, Casa, Computador ?Como seria essa a
estrutura no Diagrama de classe para elas ?
EP11.2: Como seria a implementao em cdigo? Leve em considerao o que foi anotado nos exercios
passados e a o que foi feito na modelagem no diagrama de classe da questo anterior.
EP11.3: Monte um formulrio Livre para cada Classe Criada. O formulrio ir enviar as informaes para uma
pgina em PHP que ser responsvel por guardar essas informaes em Objetos e em seguidas imprimi-las. Feito isso,
melhore seu algoritmo colocando as informaes em ma tabela HTML. No formulrio, procure criar campos diversos
como campo de texto, comboBox, etc.
EP11.4: Imagine outras situaes onde podemos criar uma varivel esttica e procure implementar em alguma
classe criada ou em um classe nova que possa criar.
EP11.5: No exemplo acima, faria alguma diferena se o encapsulamento da varivel esttica fosse private?
EP11.6: Quais seriam as vantagens ou desvantagens quanto a segurana dessa informao encapsulada?
EP11.7: Crie uma classe que contenha as informaes em um vetor dos classes Criados e mtodos que possam
receber e Enviar essas informaes em uma tabela.

Projeto e-Jovem - Mdulo II

PHP Metodos Mgicos

92

Captulo 12. Mtodos Mgicos


12.1. Introduo
Os mtodos Mgicos, so mtodos que tem caractersticas especiais, muito simples identific-los, so mtodos
que tem 2 underlines nela. No obrigatrio o seu uso, porm estes mtodos j trazem com eles algumas
funcionalidades especiais, sem necessria mente precisarmos desenvolv-las, iremos ver alguns mtodos mgicos nesse
captulo.

12.2. __construct
Esse mtodo mgico o mais conhecido de todos, vimos eles no captulo anterior, vamos recapitular ento: como
o prprio nome j diz, construct, significa construo, esse mtodo tem como funo ser inicializado no momento da
estancia de um objeto, vamos observar novamente a utilizao desse mtodo na classe usurio:

Com a funo __construct implementada, qualquer classe s poder existir se obedecer s regras de parmetros
desse mtodo, no exemplo da classe usurio, a cada vez que eu estanciar um novo objeto usurio, eu terei obrigatoriamente
que preencha um usurio e uma senha.

12.3. __destruct
Como o nome j diz, destruct significa eliminao, quando os objetos no so mais usados pelo algoritmo,
podemos eliminar ele da memria, o mtodo mgico __destruct responsvel por realizar uma ao ao fim da sua
existncia, vamos criar esse mtodo em uma classe Aluno para ver como funciona.
Neste algoritmo, pedimos para ele imprimir a mensagem: O Objeto foi finalizado quando o interpretador PHP
deixar de us-la.

Assim, podemos estanciar ela e usar os seus mtodos e ter a seguinte resposta no browser:

Projeto e-Jovem - Mdulo II

PHP Metodos Mgicos

93

12.4. __toString
Como o prprio nome j diz, toString significa tornar sequncia de caracteres, esse mtodo responsvel
por representar um valor ao tentarmos ter como resposta o prprio objeto. Nos exemplos anteriores, retornamos valores
ou atributos atravs de mtodos get, porm podemos fazer com que o Prprio objeto retorne um valor. Veja na Imagem a
baixo a sua construo:

A diferena do mtodo __tString para o mtodo get que no precisamos chamar um mtodo para que possamos
retornar esse valor, o prprio Objeto ir representar o valor que voc desejar, veja como execut-lo:

12.5. __invoke
Como o prprio nome j diz, invoke, significa chamar. Ele ser chamado sempre quando o script tenta
chamar o prprio objeto como uma funo, veja sua construo na imagem abaixo:

Perceba que no precisamos usar o -> para chamar nenhum mtodo, o prprio objeto Aluno ter um
mtodo incorporado, conseguimos implement-lo usando o Mtodo mgico __invoke.
Existem outros mtodos mgicos na API do PHP, continue pesquisando para estudos complementares.
Veja mais sobre mtodos mgicos em: http://php.net/manual/pt_BR/language.oop5.magic.php

Projeto e-Jovem - Mdulo II

PHP UML

94

Captulo 13. Herana


13.1. Introduo
O uso de herana muito importante na criao de classes orientadas a objetos, com ela voc poder criar uma
nova classe utilizando uma outra classe que j existe. Este recurso lhe permite organizar melhor o seu cdigo
reaproveitando cdigo das classes herdadas, facilitando a manuteno do cdigo e evitando reescrita de algoritmo. Agora,
iremos aprender a gerar uma interao entre classes criadas e como utiliz-las.

13.2. Herana (extends)

As classes funcionam como uma famlia, os filhos herdam caractersticas dos seu pais, porm nada impede que
eles tambm tenham suas caractersticas.
Ns j temos uma classe chamada Pessoa, que contem suas caractersticas e aes. Porm se ns quisermos
criar uma nova classe chamada Aluno, Funcionrio, Cliente ou Professor teramos novamente que criar uma
estrutura de uma pessoa dentro de cada uma delas?
Para evitar reescrita de cdigo, podemos fazer com que essas classes por exemplo herde todas as caractersticas
de pessoa. Neste nosso caso, a classe Pessoa a classe Pai as demais classes que vo herdar caractersticas dela, sero
classificadas como classes filhas. Veja a imagem abaixo, como seria uma Classe Aluno herdando caractersticas da
classe Pai que j criamos nos captulos passados chamada Pessoa.
Antes de entender o cdigo, como seria a modelagem no Diagrama de classe? Para criar interface ou herana
basta clicarmos em uma classe ao qual voc quer montar uma relao e aparecer o seguinte menu ao lado:

Generalization uma forma de gerar herana entre Classe

Uma Classe Pai considerada na hierarquia uma classe mais genrica, em quanto
as filhas so consideradas especializaes

Projeto e-Jovem - Mdulo II

PHP UML

95

Veja um exemplo de como seria uma especializao e generalizao envolvendo classes genrias e especializadas
no diagrama de Classe.

Baseado no diagrama, a classe Pai ou seja a classe mais genrica, seria a classe Pessoa. As classes abaixo
seriam especializaes da classe Pessoa, onde cada uma delas tem algo em particular, por exemplo, apenas a classe
Aluno tem informao de matriculo, apenas funcionrio tem informaes de salrio e Cliente tem apenas informaes
de crdito de bnus.
Alm das caractersticas herdadas, a classe filha, tambm herda as necessidades da classe pai, no nosso exemplo,
a classe Pessoa, para existir, precisa de nome e data de nascimento. Assim um aluno, para que possa existir, tambm
precisar obrigatoriamente pelo menos dessas caractersticas. Alimentamos essas dependncia, chamando mtodos da
classe pai usando o comando: parent::. Com esse comando temos acesso a todos os mtodos da classe pai, inclusive o
construtor, ento a qualquer momento temos acesso das informaes da classe Pai Pessoa dentro da classe filha Aluno,
claro obedecendo as regras de encapsulamento. Adicionamos ao Aluno um atributo matricula que ser obrigatrio para
a existncia dessa classe, e um mtodos responsvel por mostrar a matricula desse aluno. Veja como seria sua
implementao:

class NomeDaClasseASerCriada extends NomeDaClasseASerHerdada

Projeto e-Jovem - Mdulo II

PHP UML

96

Ilustrao 1: Sintaxe Herana PHP

Precisamos primeiro incluir a classe que ser herdada com include_once em seguida usamos o
extends para referenciar qual classe ser herdada.

Outro exemplo:
Para demonstrar como definir o relacionamento de herana, considera-se o contexto de ter que desenvolver um
programa que simule o comportamento de vrios tipos de animais em um determinado ambiente.
Inicialmente, apenas um grupo de animais estar presente neste ambiente e cada animal deve ser representado
por um objeto. Alm disso, os animais movem-se no ambiente ao seu modo e podem fazer um conjunto de coisas. O
programa dever prever que novos tipos de animais podero ser includos no ambiente.
O primeiro passo observar cada animal e definir o que cada objeto do tipo animal tem em comum no que diz
respeito aos atributos e comportamentos (mtodos). Deve-se definir tambm como os tipos de animais se relacionam.
Inicialmente, o programa deve simular o comportamento dos animais, ou seja, de um leo, de um lobo, de um gato, de
um hipoptamo, de um tigre e de um cachorro.

O segundo passo consiste em projetar a superclasse, ou seja, a classe que representa o estado e o
comportamento em comum a todos os animais. Para este exemplo, como todos os objetos so animais, a
superclasse foi denominada como Animal e as variveis e mtodos em comuns a todos os animais foram
atribudos a ela, como ilustrado na Figura. Neste exemplo, cinco variveis foram definidas: (o tipo de comida
que o animal come), (o nvel de fome do animal), (representao da altura e largura do espao que o animal
vagar ao seu redor) e (as coordenadas X e Y do animal no espao). Alm disso, quatro mtodos foram
definidos para definir o comportamento dos animais: (comportamento do animal ao fazer algum rudo),
(comportamento 57 do animal ao comer), (comportamento do animal dormindo) e (comportamento do animal
quando no est nem dormindo nem comendo, provavelmente vagueando no ambiente).
O terceiro passo o de decidir se alguma subclasse precisa de comportamentos (mtodos) especficos ao seu tipo
de subclasse. Analisando a classe Animal, pode-se extrair que os mtodos devem ter implementaes diferentes em cada
classe de animais, afinal, cada tipo de animal tem comportamento distinto ao comer e fazer rudos. Assim, esses mtodos
da superclasse devem ser sobrescritos nas subclasses, ou seja, redefinidos. Os mtodos no foram escolhidos para serem
redefinidos por achar que esses comportamentos podem ser generalizados a todos os tipos de animais.

Exerccio:
1. Como seriam os exemplos estruturados na apostila em PHP ? Modele e monte essas estruturas

organizadas em pastas distintas.


Finalizamos o nosso Curso de PHP. Espero que tenham gostado do contedo, procure implementar
melhorar mais seu cdigo, estude outras linguagens de programao, como ASP, JSP, RUBY por exemplo.
Estude tambm alguns framewoks para desenvolvimento WEB como ZEND, JOOMLA, WORDPRESS,
MAGENTO e veja qual recurso melhor usar para atender as suas necessidades, das empresas ou clientes.

Projeto e-Jovem - Mdulo II

PHP UML

97

Bibliografia
http://php.net/docs.php/
http://www.php.com.br/
http://www.planet-php.net/

Use a Cabea Php & Mysql , Beighley, Lynn; Morrison, Michael


Editora: Alta Books

Projeto e-Jovem - Mdulo II

Secretaria da Educao do Cear


Coordenadoria do Desenvolvimento da Escola e da Aprendizagem (CODEA)/ Protagonismo Estudantil
Centro Administrativo Governador Virglio Tvora - Av. General Afonso Albuquerque Lima, S/N - 2 andar - BlocoB e C Cambeba
Fortaleza/Cear - CEP 60839-900 - Telefone: (85) 3101.3928 - 3101.3693 - 3101.2693

S-ar putea să vă placă și