TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em...

103
Instituto Politécnico do Porto Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática T T U U T T O O R R I I A A L L D D E E P P H H P P realizado por José Bruno Pinto Rua orientado por António Cardoso Costa Setembro de 2001

Transcript of TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em...

Page 1: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Instituto Politécnico do Porto

Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática

TTUUTTOORRIIAALL DDEE PPHHPP

realizado por

José Bruno Pinto Rua

orientado por

António Cardoso Costa

Setembro de 2001

Page 2: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Agradecimentos

Agradecimentos Desejo agradecer ao Eng.º António Cardoso Costa por todo o apoio prestado,

quer pela disponibilidade para esclarecer dúvidas, quer pela revisão das versões preliminares deste trabalho, ou através da indicação de bibliografia útil.

Quero também agradecer aos meus pais, por todo o apoio e motivação que

sempre me deram, não apenas nos meus estudos, mas em todas as situações. Por fim, quero agradecer a todos os professores, colegas e amigos, que ao

longo de todos estes anos, de uma ou outra forma, me apoiaram, de forma a eu atingir com sucesso os meus objectivos.

A todos, o meu muito obrigado.

Tutorial PHP - 2 -

Page 3: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Índice

Índice

1 INTRODUÇÃO __________________________________________________ 7

2 INTRODUÇÃO AO PHP __________________________________________ 8

BREVE HISTÓRIA SOBRE PHP ___________________________________________ 8 O QUE É O PHP ? ____________________________________________________ 10 O QUE PODE SER FEITO COM PHP? ______________________________________ 11 PRINCIPAIS VANTAGENS DO PHP________________________________________ 12

3 SINTAXE BÁSICA ______________________________________________ 14

DELIMITAR O CÓDIGO PHP ____________________________________________ 14 SEPARADOR DE INSTRUÇÕES ___________________________________________ 15 NOMES DE VARIÁVEIS ________________________________________________ 15 COMENTÁRIOS______________________________________________________ 16

Comentários de uma linha __________________________________________ 16 Comentários de mais de uma linha ___________________________________ 16

IMPRIMIR CÓDIGO HTML _____________________________________________ 17

4 TIPOS _________________________________________________________ 18

TIPOS SUPORTADOS__________________________________________________ 18 Inteiros (integer ou long) ___________________________________________ 19 Virgula Flutuante (double ou float) ___________________________________ 19 Strings__________________________________________________________ 20 Arrays __________________________________________________________ 21 Listas___________________________________________________________ 22 Objectos ________________________________________________________ 23 Booleanos _______________________________________________________ 24

TRANSFORMAÇÃO DE TIPOS____________________________________________ 24 Atribuição _______________________________________________________ 24 Transformação explícita de tipos _____________________________________ 25 A função settype __________________________________________________ 26

5 OPERADORES _________________________________________________ 27 ARITMÉTICOS ______________________________________________________ 27 DE STRINGS ________________________________________________________ 27 DE ATRIBUIÇÃO _____________________________________________________ 28 BIT A BIT __________________________________________________________ 29 LÓGICOS __________________________________________________________ 29 COMPARAÇÃO ______________________________________________________ 30 EXPRESSÃO CONDICIONAL_____________________________________________ 30 DE INCREMENTO E DECREMENTO________________________________________ 31

Tutorial PHP - 3 -

Page 4: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Índice

6 ESTRUTURAS DE CONTROLO __________________________________ 32

CICLOS ___________________________________________________________ 32 COMANDOS DE SELECÇÃO _____________________________________________ 33

If ______________________________________________________________ 33 Switch __________________________________________________________ 36

COMANDOS DE REPETIÇÃO ____________________________________________ 38 While___________________________________________________________ 38 Do...While_______________________________________________________ 39 For ____________________________________________________________ 39 Break___________________________________________________________ 41 Continue ________________________________________________________ 41

7 FUNÇÕES ______________________________________________________ 43 DEFINIR FUNÇÕES ___________________________________________________ 43 RETORNO DE VALORES _______________________________________________ 44 ARGUMENTOS ______________________________________________________ 44

Passagem de parâmetros por referência _______________________________ 45 Argumentos com valores predefinidos (default)__________________________ 46

CONTEXTO_________________________________________________________ 48 ENDEREÇAMENTO ___________________________________________________ 48

8 VARIÁVEIS E CONSTANTES ____________________________________ 50 DECLARAÇÃO DE UMA VARIÁVEL _______________________________________ 50 O COMANDO STATIC _________________________________________________ 50 “VARIÁVEIS VARIÁVEIS” _____________________________________________ 52 VARIÁVEIS ENVIADAS PELO UTILIZADOR__________________________________ 52

URLencode ______________________________________________________ 53 Utilizar arrays ___________________________________________________ 54

VARIÁVEIS DE AMBIENTE _____________________________________________ 55 VERIFICANDO O TIPO DE UMA VARIÁVEL __________________________________ 56 DESTRUIR UMA VARIÁVEL_____________________________________________ 57 VERIFICAR O VALOR DE UMA VARIÁVEL __________________________________ 57

A função isset ____________________________________________________ 57 A função empty ___________________________________________________ 58

CONSTANTES PREDEFINIDAS ___________________________________________ 59 DEFINIR CONSTANTES ________________________________________________ 59

9 CLASSES E OBJECTOS _________________________________________ 60 CLASSES __________________________________________________________ 60 OBJECTO __________________________________________________________ 61 A VARIÁVEL $THIS __________________________________________________ 61 SUBCLASSES _______________________________________________________ 63 CONSTRUTORES_____________________________________________________ 64

10 NOÇÕES DE SQL _____________________________________________ 65 INTRODUÇÃO_______________________________________________________ 65 COMANDOS BÁSICOS DE SQL __________________________________________ 67

Comando Create__________________________________________________ 67 Comando Drop ___________________________________________________ 68 Comando Alter ___________________________________________________ 68

Tutorial PHP - 4 -

Page 5: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Índice

MANIPULAR DADOS DAS TABELAS_______________________________________ 69 Comando SELECT ________________________________________________ 69 Comando INSERT ________________________________________________ 70 Comando UPDATE _______________________________________________ 70 Comando DELETE________________________________________________ 71

11 ACEDER AO MYSQL VIA PHP _________________________________ 73 ESTABELECER CONEXÕES _____________________________________________ 73 SELECCIONAR A BASE DE DADOS ________________________________________ 74 REALIZAR CONSULTAS _______________________________________________ 75

Apagar o resultado ________________________________________________ 75 Retornar o número de linhas ________________________________________ 76 Utilizar os resultados ______________________________________________ 76 Alterar o ponteiro de um resultado ___________________________________ 77

12 UTILIZAR COOKIES__________________________________________ 78

O QUE SÃO COOKIES? ________________________________________________ 78 GRAVAR COOKIES ___________________________________________________ 79 LER COOKIES_______________________________________________________ 80

13 FICHEIROS __________________________________________________ 81 COPIAR FICHEIROS __________________________________________________ 81 VERIFICAR O TAMANHO DE UM FICHEIRO _________________________________ 82 VERIFICAR SE UM FICHEIRO EXISTE ______________________________________ 82 LIMPAR O CACHE ____________________________________________________ 83 ABRIR FICHEIROS PARA LEITURA E/OU ESCRITA_____________________________ 83 LER UM FICHEIRO ___________________________________________________ 86 ESCREVER NUM FICHEIRO _____________________________________________ 87 EXEMPLO__________________________________________________________ 88 UPLOADS COM FORMULÁRIOS HTML ____________________________________ 89

14 ENVIAR UM E-MAIL__________________________________________ 90

15 CONCLUSÃO_________________________________________________ 91

16 APÊNDICE 1 _________________________________________________ 92 INSTALAÇÃO E CONFIGURAÇÃO DO APACHE ( WINDOWS ) ____________________ 92

17 APÊNDICE 2 _________________________________________________ 94 INSTALAÇÃO E CONFIGURAÇÃO DO PHP ( WINDOWS ) _______________________ 94

18 APÊNDICE 3 _________________________________________________ 96 INSTALAÇÃO E CONFIGURAÇÃO DO MYSQL ( WINDOWS ) ____________________ 96

19 APÊNDICE 4 _________________________________________________ 98 COMANDOS BÁSICOS DE MYSQL________________________________________ 98

Iniciar o mySQL em background _____________________________________ 98 Fazer o login no mySQL como root ___________________________________ 98 Adicionar um novo utilizador________________________________________ 98 Fazer o login com o nome e password do utilizador criado ________________ 99 Criar uma base de dados chamada teste _______________________________ 99 Tornar essa base de dados, a base de dados activa_______________________ 99

Tutorial PHP - 5 -

Page 6: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Índice

Mostrar tabelas existentes na base de dados teste_______________________ 100 Mostrar definições da tabela tabelateste ______________________________ 100 Listar o todos registos da tabela tabelateste ___________________________ 101 Listar todos os registos onde o ID tem o número 1 ______________________ 101 Apagar um registo _______________________________________________ 101 Actualizar um campo de um registo __________________________________ 102

20 BIBLIOGRAFIA _____________________________________________ 103

Tutorial PHP - 6 -

Page 7: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Introdução

11 IINNTTRROODDUUÇÇÃÃOO

Este trabalho tem como principal objectivo a introdução à programação na

linguagem PHP.

Para isso tentei fazer uma abordagem simples e prática, tornando este tutorial

acessível quer a programadores experientes, quer a programadores que se estejam a

iniciar nesta área da programação. Para isso, como não poderia deixar de ser, foi preciso

algumas explicações básicas, como por exemplo a definição de tipos, ou de estruturas

de controle, possibilitando a um programador iniciante toda a informação necessária

para dar os primeiros passos na programação PHP. O programador mais experiente

também poderá encontrar informação de interesse, visto serem focados aspectos como o

tratamento de cookies, ou de e-mails.

Apesar do PHP poder ser implementado em qualquer ambiente, visto ser

independente do sistema operativo e do servidor de páginas, decidi especializar a

elaboração deste trabalho em ambientes Windows, fornecendo para isso alguma

informação nesse sentido, como por exemplo a instalação de algum software

importante.

Em termos de ligação a base de dados, apesar do PHP estar preparado para

trabalhar com quase todas as bases de dados disponíveis actualmente, decidi usar, para

efeitos de exemplo, a base de dados mySQL, visto ser uma base de dados muito simples

de usar, de forma a não se alargar o estudo muito além do PHP em si, e pelo facto de

estar também disponível para ambientes Windows.

Tutorial PHP - 7 -

Page 8: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Introdução ao PHP

22 IINNTTRROODDUUÇÇÃÃOO AAOO PPHHPP

BBrreevvee HHiissttóórriiaa ssoobbrree PPHHPP

A linguagem PHP foi concebida durante o Outono de 1994 por Rasmus Lerdorf.

As primeiras versões não foram disponibilizadas ao público, tendo sido utilizadas na sua

página pessoal, apenas para que ele pudesse ter informações sobre as visitas que iam

sendo feitas. A primeira versão utilizada por outras pessoas foi disponibilizada em

1995, e ficou conhecida como “Personal Home Page Tools” (ferramentas para páginas

pessoais). Era composta por um sistema bastante simples que interpretava algumas

macros e alguns utilitários de auxilio : um livro de visitas, um contador e outros

pequenos utilitários.

Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI.

O FI veio de um outro programa escrito por Rasmus que interpretava dados de

formulários HTML (Form Interpreter). Ele combinou os scripts do Personal Home

Page Tools com o FI e adicionou o suporte de mSQL, aparecendo assim o PHP/FI, que

entretanto cresceu bastante, contando para isso com a ajuda de pessoas que passaram a

contribuir para o projecto.

Tutorial PHP - 8 -

Page 9: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Introdução ao PHP

Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de

15.000 sites em todo o mundo, e em meados de 1997 esse número subiu para mais de

50.000. Nessa época houve uma mudança no desenvolvimento do PHP. Deixou de ser

um projecto de Rasmus, contando com contribuições de outras pessoas para ter uma

equipa de desenvolvimento mais organizada. O interpretador foi posteriormente

reescrito por Zeev Suraski e Andi Gutmans, e esse novo interpretador foi a base para a

versão 3.

O lançamento da versão 4 do PHP, ocorrido em 22 de Maio 2000, trouxe muitas

novidades aos programadores de PHP. Uma das principais novidades foi o suporte de

sessões, bastante útil para identificar o cliente que solicitou determinada informação.

Além das alterações referentes ao sintaxe e novos recursos de programação, o PHP4

teve como novidade um optimizador chamado Zend, que permite a execução muito mais

rápida de scripts PHP. A empresa que produz o Zend promete ainda o lançamento de

um compilador de PHP. Códigos compilados serão executados mais rapidamente, além

de proteger o código fonte da aplicação.

Tutorial PHP - 9 -

Page 10: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Introdução ao PHP

OO qquuee éé oo PPHHPP ??

PHP é uma linguagem que permite criar sites dinâmicos, possibilitando uma

interacção com o utilizador através de formulários, parâmetros do browser e links. A

diferença do PHP em relação a linguagens como o JAVASCRIPT, é que o código PHP

é executado no servidor, sendo enviado para o cliente apenas código HTML puro. Desta

maneira é possível interagir com bases de dados e aplicações existentes no servidor,

com a vantagem de não se expor o código fonte para o utilizador. Isso pode ser útil

quando se está a trabalhar com passwords ou qualquer outro tipo de informações

confidenciais, e claro, para esconder o código, evitando cópias não autorizadas.

A principal diferença entre o PHP e um script CGI escrito em C ou PERL, é que

o código PHP fica embutido no próprio HTML, enquanto no caso do script CGI é

necessário gerar todo o código HTML, ou ler de um outro ficheiro.

PHP é portanto uma linguagem do tipo Server-Side Script, ou seja, o código do

script PHP é executado no servidor.

Este tipo de scripts são responsáveis pela criação de páginas em tempo real.

Num motor de busca, por exemplo, seria inviável manter um arquivo para cada consulta

a ser realizada. O que existe é um modelo da página de resultados, que é elaborada em

tempo real, com os dados respectivos.

Tutorial PHP - 10 -

Page 11: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Introdução ao PHP

OO qquuee ppooddee sseerr ffeeiittoo ccoomm PPHHPP??

Basicamente qualquer operação habitual em páginas da Internet, pode ser feita

com PHP, como receber dados de um formulário, gerar páginas dinamicamente ou

enviar e receber cookies.

Uma das características mais importantes do PHP é o facto de suportar um

grande número de bases de dados, como dBase, Interbase, mSQL, mySQL, Oracle,

Sybase, PostgreSQL e várias outras. Construir uma página que suporte uma base de

dados, torna-se uma tarefa extremamente simples com PHP.

Além disso, o PHP suporta outros serviços através de protocolos como por

exemplo IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP.

É ainda possível abrir sockets e interagir com outros protocolos.

Tutorial PHP - 11 -

Page 12: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Introdução ao PHP

PPrriinncciippaaiiss vvaannttaaggeennss ddoo PPHHPP

• PHP pode correr em (quase) todas os ambientes. Usando o mesmo

código base, o PHP pode ser compilado em cerca de 25 plataformas diferentes,

incluindo quase todos os UNIX, WINDOWS (95/98/NT/2000) e MACINTOSH. Como

o código base é sempre o mesmo, os scripts irão ser sempre executados de forma

idêntica.

• PHP é parecido com o C. Por isso, qualquer programador com

experiência numa linguagem do estilo do C (JAVASCRIPT, JAVA, etc ), pode

facilmente perceber PHP. Este factor é sem duvida importante para o desenvolvimento

da linguagem.

• PHP é composto por módulos. Isto permite aos programadores duas

maneiras de expandir o PHP de forma a corresponder a alguma característica especial

pretendida: escrevendo um módulo e compilando-o dentro do executável; ou criando

um executável que pode ser chamado usando um mecanismo do PHP (PHP’s Dynamic

Loading Mechanism).

• Variedade de servidores de HTTP. O PHP é actualmente compatível com

Apache, IIS, AOLServer, Roxen e THTTPD. Pode ainda ser executado como um

módulo CGI.

Tutorial PHP - 12 -

Page 13: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Introdução ao PHP

• Compatibilidade com variadas bases de dados. O PHP é compatível com

mySQL, MS SQL, Oracle, Informix, PostgreSQL, e muitas outras bases de dados.

Também é já possível a integração com ODBC, e com bases de dados Access.

• Rapidez. O PHP é normalmente usado como um módulo do Apache, o

que o torna extremamente rápido. É totalmente escrito em C, e relativamente pequeno,

podendo portanto ser executado rapidamente e com pouca necessidade de memória.

• PHP é “Open Source”. Ou seja, o seu código é totalmente livre (grátis) e

disponível. Não se está dependente do fabricante para corrigir pequenos problemas que

possam surgir, ou ser obrigado a pagar por actualizações. Pode-se simplesmente ajustar

o código às necessidades especificas que possam surgir.

Tutorial PHP - 13 -

Page 14: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Sintaxe Básica

33 SSIINNTTAAXXEE BBÁÁSSIICCAA

DDeelliimmiittaarr oo ccóóddiiggoo PPHHPP

O código PHP fica embutido no próprio HTML. O interpretador identifica

quando um código é PHP pelas seguintes tags:

<?php

comandos

?>

<script language=”php”>

comandos

</script>

<?

comandos

?>

<%

comandos

%>

O tipo de tags mais utilizado é o terceiro, que consiste numa simplificação do

primeiro. Para o utilizar, é necessário activar a opção short-tags na configuração do

PHP. O último tipo serve para facilitar o uso por programadores acostumados à sintaxe

de ASP. Para o utilizar é também necessário activá-lo no PHP, através do ficheiro de

configuração php.ini.

Tutorial PHP - 14 -

Page 15: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Sintaxe Básica

SSeeppaarraaddoorr ddee iinnssttrruuççõõeess

Entre cada instrução em PHP é preciso utilizar o ponto e vírgula ( ; ), assim

como em C, PERL e outras linguagens do género. Na última instrução do bloco de

código não é necessário o uso do ponto e vírgula, mas por questões estéticas é normal a

sua utilização.

NNoommeess ddee vvaarriiáávveeiiss

Todas as variáveis em PHP têm o nome composto pelo caracter “$” e uma

string, que deve iniciar por uma letra ou o caracter “_”.

O PHP é case sensitive, ou seja, as variáveis $temp e $TEMP são diferentes. Por

isso é preciso ter muito cuidado ao definir os nomes das variáveis. É bom evitar os

nomes em maiúsculas, pois como se irá ver mais à frente, o PHP já possui alguma

variáveis predefinidas cujos nomes são formados por letras maiúsculas.

Tutorial PHP - 15 -

Page 16: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Sintaxe Básica

CCoommeennttáárriiooss

Existem dois tipos de comentários em código PHP:

Comentários de uma linha

Este tipo de comentário, marca como comentário até ao final da linha ou até ao

final do bloco de código PHP. Pode ser delimitado pelo caracter “#” ou por duas barras

( // ).

Exemplo:

<? echo “teste”; #isto é um teste ?>

<? echo “teste”; //este teste é igual ao anterior ?>

Comentários de mais de uma linha

O PHP tem como delimitadores os caracteres “/*” para o início do bloco e “*/”

para o fim do comentário. Se o delimitador de fim de código PHP ( “?>” ) estiver

dentro de um comentário, não será reconhecido pelo interpretador.

Exemplos:

<?

echo “teste”; /* Isto é um comentário com mais

de uma linha, mas não funciona correctamente ?>

*/

<?

echo “teste”; /* Isto é um comentário com mais

de uma linha que funciona correctamente

*/

?>

Tutorial PHP - 16 -

Page 17: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Sintaxe Básica

IImmpprriimmiirr ccóóddiiggoo HHTTMMLL

Um script PHP geralmente tem como resultado uma página HTML, ou algum

outro texto. Para gerar esse resultado, deve ser utilizada uma das funções de impressão,

echo ou print. Para isso deve-se utilizar um dos seguintes formatos:

print(argumento);

echo (argumento1, argumento2, ... );

echo argumento;

Tutorial PHP - 17 -

Page 18: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

44 TTIIPPOOSS

TTiippooss SSuuppoorrttaaddooss

O PHP suporta os seguintes tipos de dados:

• Inteiros (Integer ou Long)

• Virgula Flutuante (Float ou Double)

• String

• Array

• Object

O PHP utiliza verificação dinâmica de tipos, ou seja, uma variável pode conter

valores de diferentes tipos em diferentes momentos da execução do script. Por este

motivo não é necessário declarar o tipo de uma variável para a usar. O interpretador

PHP decidirá qual o tipo daquela variável, verificando o conteúdo em tempo real.

Ainda assim, é permitido converter os valores de um tipo para outro desejado,

utilizando o typecasting ou a função settype, conforme será explicado mais à frente.

Tutorial PHP - 18 -

Page 19: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

Inteiros (integer ou long)

Uma variável pode conter um valor inteiro com atribuições que sigam as

seguintes sintaxes:

$temp = 1234; # inteiro positivo na base decimal

$temp = -234; # inteiro negativo na base decimal

$temp = 0234; # inteiro na base octal - simbolizado

# pelo 0 - equivale a 156 decimal

$temp = 0x34; # inteiro na base hexadecimal

# - simbolizado pelo 0x – equivale a 52

# decimal.

A diferença entre inteiros integer e long está no número de bytes utilizados para

armazenar a variável. Como a escolha é feita pelo interpretador PHP de maneira

transparente para o utilizador, podemos afirmar que os tipos são iguais.

Virgula Flutuante (double ou float)

Uma variável pode ter um valor em virgula flutuante com atribuições que sigam

as seguintes sintaxes:

$temp = 1.234;

$temp = 23e4; # equivale a 230.000

Tutorial PHP - 19 -

Page 20: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

Strings

As Strings em PHP podem ser utilizadas de duas maneiras:

• utilizando aspas simples ( ' ) – Desta maneira, o valor da variável será

exactamente o texto contido entre as aspas (com excepção de “\\” e “\'” – ver

tabela seguinte)

• utilizando aspas duplas ( " ) – Desta maneira, qualquer variável ou

caracter especial será expandido antes de ser atribuído.

Exemplo:

<?

$teste = "Nome";

$temp = '---$teste--\n';

echo "$temp";

?>

O resultado deste exemplo será: ---$teste--\n

<?

$teste = "Nome";

$temp = "---$teste---\n";

echo "$temp";

?>

Neste exemplo o resultado será "---Nome--" (com uma quebra de linha no fim).

Tutorial PHP - 20 -

Page 21: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

A tabela seguinte apresenta os caracteres especiais:

Sintaxe Significado

\N Nova linha

\r Retorno de linha

\t Tabulação horizontal

\\ A própria barra ( “\” )

\$ O símbolo “$”

\’ Aspa simples

\” Aspa dupla

Arrays

Arrays em PHP podem ser identificados como vectores indexados.

Mais especificamente, um valor do tipo array é um dicionário onde os índices

são as chaves de acesso. De realçar que os índices podem ser valores de qualquer tipo e

não apenas inteiros. Inclusive, se os índices forem todos inteiros, estes não precisam

formar um intervalo contínuo.

Como a validação de tipos em PHP é dinâmica, valores de tipos diferentes

podem ser usados como índices de array, assim como os valores atribuídos podem

também ser de tipos diferentes.

Exemplo:

<?

$cor[1] = “vermelho”;

$cor[2] = “verde”;

$cor[3] = “azul”;

$cor[“teste”] = 1;

?>

Tutorial PHP - 21 -

Page 22: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

Ou como alternativa:

<?

$cor = array(1 => “vermelho, 2 => “verde, 3 => “azul”,

“teste => 1);

?>

Listas

As listas são utilizadas em PHP para realizar atribuições múltiplas.

Através de listas é possível atribuir valores que estão num array para variáveis.

Exemplo:

list($a, $b, $c) = array(“a”, “b”, “c”);

O comando anterior atribui valores às três variáveis simultaneamente. De notar

que só são atribuídos às variáveis da lista os elementos do array que possuem índices

inteiros e não negativos. No exemplo anterior as três atribuições foram bem sucedidas

porque ao inicializar um array sem especificar os índices eles passam a ser inteiros, a

partir do zero. Um factor importante, é que cada variável da lista possui um índice

inteiro, começando pelo zero, que serve para determinar qual o valor que será atribuído.

No exemplo anterior temos $a com índice 0, $b com índice 1 e $c com índice 2.

Outro exemplo:

$arr=array(1=>”um”,3=>”tres”,”a”=>”letraA”,2=>”dois);

list($a,$b,$c,$d) = $arr;

Tutorial PHP - 22 -

Page 23: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

Após a execução do código anterior temos os seguintes valores:

$a => null

$b => “um”

$c => “dois”

$d => “tres”

De observar que à variável $a não foi atribuído valor, pois no array não existe

elemento com índice 0 (zero). Outro pormenor importante é que o valor “tres” foi

atribuído à variável $d, e não a $b, pois o seu índice é 3, o mesmo que $d na lista.

Por fim, pode-se constatar que o valor “letraA” não foi atribuído a nenhum

elemento da lista, pois o seu índice não é inteiro.

Os índices da lista servem apenas como referência ao interpretador PHP para

realizar as atribuições, não podendo ser acedidos de nenhuma maneira pelo

programador. Ao contrário do array, uma lista não pode ser atribuída a uma variável,

servindo apenas para fazer múltiplas atribuições através de um array.

Objectos

Um objecto pode ser inicializado utilizando o comando new para instanciar uma

classe a uma variável.

Exemplo:

class teste {

function nada() {

echo “nada”;

}

}

$temp = new teste;

$temp -> nada();

A utilização de objectos será melhor explicada mais à frente.

Tutorial PHP - 23 -

Page 24: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

Booleanos

O PHP não possui um tipo de variável booleano, mas é capaz de avaliar

expressões e retornar true ou false, através do tipo integer. É usado o valor 0 (zero) para

representar o estado false, e qualquer valor diferente de zero (normalmente 1) para

representar o estado true.

TTrraannssffoorrmmaaççããoo ddee ttiippooss

A transformação de tipos em PHP pode ser feita das seguintes maneiras:

Atribuição

Quando ocorrem determinadas operações (“+”, por exemplo) entre duas

variáveis de tipos diferentes, o PHP converte o valor de uma delas automaticamente.

De notar que se o operando for uma variável, seu valor não será alterado.

O tipo para o qual os valores dos operandos serão convertidos é determinado da

seguinte forma: Se um dos operandos for float, o outro será convertido para float, senão,

se um deles for integer, o outro será convertido para integer.

Exemplo:

$temp = “1”; // $temp é a string “1”

$temp = $temp + 1; // $temp é o integer 2

$temp = $temp + 3.7; // $temp é o double 5.7

$temp = 1 + 1.5 // $temp é o double 2.5

Tutorial PHP - 24 -

Page 25: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

De notar que o PHP converte string para integer ou double, mantendo o valor. O

sistema utilizado pelo PHP para converter strings para números é o seguinte:

• É analisado o início da string. Se existir um número, ele será avaliado.

Senão, o valor será 0 (zero);

• O número pode conter um sinal no início (“+” ou “-“);

• Se na string existir um ponto na parte numérica a ser analisada, então

esse ponto será considerado, e o valor obtido será double;

• Se na string existir um “e” ou “E” na parte numérica a ser analisada, o

valor seguinte será considerado como expoente da base 10, e o valor obtido será

double;

Exemplos:

$temp = 1 + “10.5”; // $temp == 11.5

$temp = 1 + “-1.3e3”; // $temp == -1299

$temp = 1 + “teste10.5”; // $temp == 1

$temp = 1 + “10testes”; // $temp == 11

$temp = 1 + "10testes"; // $temp == 11

$temp = 1 + "+10testes"; // $temp == 1

Transformação explícita de tipos

A sintaxe do typecast do PHP é semelhante ao C. Basta escrever o tipo entre

parênteses antes do valor :

Exemplo:

$temp = 15; // $temp é integer (15)

$temp = (double) $temp // $temp é double (15.0)

$temp = 3.9 // $temp é double (3.9)

$temp = (int) $temp // $temp é integer (3)

// o valor decimal é truncado

Tutorial PHP - 25 -

Page 26: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Tipos

Os tipos do typecast permitidos são:

(int), (integer)⇒ altera para integer;

(real), (double), (float)⇒ altera para float;

(string)⇒ altera para string;

(array)⇒ altera para array;

(object)⇒ altera para objecto.

A função settype

A função settype converte uma variável para o tipo especificado, que pode ser

integer, double, string, array ou object.

Exemplo:

$temp = 15; // $temp é integer

settype($temp,double) // $temp é double

Tutorial PHP - 26 -

Page 27: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Operadores

55 OOPPEERRAADDOORREESS

AArriittmmééttiiccooss

Este tipo de operadores só podem ser utilizados quando os operandos são

números (integer ou float). Se forem de outro tipo, terão seus valores convertidos antes

da realização da operação.

+ adição

- subtracção

* multiplicação

/ divisão

% módulo

ddee SSttrriinnggss

Só há um operador exclusivo para strings:

. concatenação

Tutorial PHP - 27 -

Page 28: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Operadores

ddee AAttrriibbuuiiççããoo

Existe um operador básico de atribuição e diversos derivados que retornam

sempre o valor atribuído. No caso dos operadores derivados de atribuição, a operação é

feita entre os dois operandos, sendo atribuído o resultado para o primeiro. A atribuição é

sempre por valor, e não por referência.

= atribuição simples

+= atribuição com adição

-= atribuição com subtracção

*= atribuição com multiplicação

/= atribuição com divisão

%= atribuição com módulo

.= atribuição com concatenação

Exemplo:

$a = 7;

$a += 2; // $a passa a ter o valor 9

Tutorial PHP - 28 -

Page 29: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Operadores

BBiitt aa BBiitt

Este tipo de operadores comparam dois números bit a bit.

& “e” lógico

| “ou” lógico

^ ou exclusivo

~ não (negação)

<< shift left

>> shift right

LLóóggiiccooss

Os operadores lógicos são utilizados para inteiros que representem valores

booleanos.

and “e” lógico

or “ou” lógico

xor ou exclusivo

! não (inversão)

&& “e” lógico

|| “ou” lógico

Existem dois operadores para “e” e para “ou” porque têm diferentes posições na

ordem de precedência.

Tutorial PHP - 29 -

Page 30: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Operadores

CCoommppaarraaççããoo

As comparações são feitas entre os valores contidos nas variáveis e retornam

sempre um valor booleano.

== igual a

!= diferente de

< menor que

> maior que

<= menor ou igual a

>= maior ou igual a

EExxpprreessssããoo ccoonnddiicciioonnaall

Existe um operador de selecção que pode avaliar até três termos :

(expressao1)?(expressao2):( expressao3)

O interpretador PHP avalia a primeira expressão. Se ela for verdadeira, a

expressão retorna o valor de expressão2, caso seja verdadeira. Senão, retorna o valor de

expressão3.

Tutorial PHP - 30 -

Page 31: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Operadores

DDee iinnccrreemmeennttoo ee ddeeccrreemmeennttoo

++ incremento

-- decremento

Podem ser utilizados de duas formas: antes ou depois da variável. Quando

utilizado antes, retorna o valor da variável antes de incrementá-la ou decrementá-la.

Quando utilizado depois, retorna o valor da variável já incrementado ou decrementado.

Exemplos:

$a = $b = 10; // $a e $b recebem o valor 10

$c = $a++; // $c recebe 10 e $a passa a ter 11

// $d = ++$b;

// $d recebe 11, valor de $b já

incrementado

Tutorial PHP - 31 -

Page 32: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

66 EESSTTRRUUTTUURRAASS DDEE CCOONNTTRROOLLOO

As estruturas seguintes são comuns para a generalidade das linguagens de

programação, portanto, será apenas descrito a sintaxe de cada uma delas, resumindo o

seu funcionamento.

CCiiccllooss

Um ciclo consiste em vários comandos agrupados com o objectivo de relacioná-

los com determinado comando ou função. Em comandos como if, for, while e switch,

pode-se utilizar ciclos, para permitir que um comando faça parte do contexto desejado.

Os ciclos em PHP são delimitados pelos caracteres “{” e “}”. A utilização dos

delimitadores de ciclo numa parte qualquer do código não relacionada com os

comandos acima descritos ou funções não produzirá nenhum efeito, e será tratada

normalmente pelo interpretador.

Por exemplo:

if ($x == $y)

comando1;

comando2;

Para que comando2 esteja relacionado com o if é preciso utilizar um ciclo:

if ($x == $y){

comando1;

comando2;

}

Tutorial PHP - 32 -

Page 33: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

CCoommaannddooss ddee sseelleeccççããoo

Também chamados de condicionais, os comandos de selecção permitem

executar comandos ou conjuntos de comandos com base em testes feitos durante a

execução.

If

O mais trivial dos comandos condicionais é o if. Este comando testa uma

condição e executa o comando indicado se o resultado for true (valor diferente de zero).

Possui duas sintaxes:

if (expressão)

comando;

if (expressão):

comando;

. . .

comando;

endif;

Para incluir mais de um comando no if da primeira sintaxe, é preciso utilizar um

ciclo, delimitado pelos caracteres “{}”.

O else é um complemento opcional para o if. Se for utilizado, e se a expressão

retornar o valor false (zero), então o comando será executado.

Tem duas sintaxes que são as seguintes:

if (expressão)

comando;

else

comando;

Tutorial PHP - 33 -

Page 34: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

if (expressão):

comando;

. . .

comando;

else

comando;

. . .

comando;

endif;

A seguir, um exemplo do comando if utilizado com else:

if ($a > $b)

$maior = $a;

else

$maior = $b;

O exemplo anterior coloca em $maior o maior valor entre $a e $b

Em determinadas situações é necessário fazer mais que um teste, e executar

condicionalmente diversos comandos ou conjunto de comandos.

Para facilitar uma estrutura do tipo:

if (expressao1)

comando1;

else

if (expressao2)

comando2;

else

if (expressao3)

comando3;

else

comando4;

Tutorial PHP - 34 -

Page 35: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

foi criado o comando, também opcional, elseif. O elseif tem a mesma função de

um else e um if usados sequencialmente, como no exemplo anterior. Num mesmo if

podem ser utilizados diversos elseif’s.

O comando elseif também pode ser utilizado com dois tipos de sintaxe. Em

resumo, a sintaxe geral do comando if é a seguinte :

if (expressao1)

comando;

[ elseif (expressao2)

comando; ]

[ else

comando; ]

if (expressao1) :

comando;

. . .

comando;

[ elseif (expressao2)

comando;

. . .

comando; ]

[ else

comando;

. . .

comando; ]

endif;

Tutorial PHP - 35 -

Page 36: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

Switch

O comando switch actua de maneira semelhante a uma série de comandos if na

mesma expressão. Frequentemente o programador pode querer comparar uma variável

com diversos valores, e executar um código diferente que depende de qual valor é igual

ao da variável. Quando isso for necessário, deve-se usar o comando switch. O exemplo

seguinte mostra dois pedaços de código que fazem a mesma coisa, sendo que o primeiro

utiliza uma série de if’s e o segundo utiliza switch:

if ($i == 0)

print “i é igual a zero”;

elseif ($i == 1)

print “i é igual a um”;

elseif ($i == 2)

print “i é igual a dois”;

switch ($i) {

case 0:

print “i é igual a zero”;

break;

case 1:

print “i é igual a um”;

break;

case 2:

print “i é igual a dois”;

break;

}

Tutorial PHP - 36 -

Page 37: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

É importante compreender o funcionamento do switch para não cometer erros. O

comando switch testa linha a linha os valores encontrados, e a partir do momento que

encontra um valor igual ao da variável testada, passa a executar todos os comandos

seguintes, mesmo os que fazem parte de outro teste, até o fim do ciclo switch. Por isso

tem de ser usado o comando break, que termina a execução e faz com que o código seja

executado da maneira desejada.

Por exemplo :

switch ($i) {

case 0: print “i é igual a zero”;

case 1: print “i é igual a um”;

case 2: print “i é igual a dois”;

}

No exemplo anterior, se $i for igual a zero, os três comandos print serão

executados. Se $i for igual a 1, então os dois últimos print serão executados. O

comando só funcionará da maneira desejada se $i for igual a 2.

Em algumas linguagens que implementam o comando switch, ou semelhante, os

valores a serem testados só podem ser do tipo inteiro. Em PHP é permitido usar valores

do tipo string como elementos de teste do comando switch.

Como por exemplo:

switch ($s) {

case “casa”:

print “A casa é amarela”;

case “arvore”:

print “a árvore é bonita”;

case “lampada”:

print “joao apagou a lampada”;

}

Tutorial PHP - 37 -

Page 38: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

CCoommaannddooss ddee rreeppeettiiççããoo

While

O while é o comando de repetição mais simples. Testa uma condição e executa

um comando ou um conjunto de comandos, até que a condição testada seja falsa. Assim

como o if, o while também possui duas sintaxes alternativas:

while (<expressao>)

<comando>;

while (<expressao>):

<comando>;

. . .

<comando>;

endwhile;

A expressão só é testada de cada vez que o conjunto de instruções termina, além

do teste inicial. Se o valor da expressão passar a ser false no meio do conjunto de

instruções, a execução segue até ao fim do ciclo. Se no teste inicial a condição for

avaliada como false, o conjunto de comandos não será executado.

O exemplo a seguir mostra o uso do while para imprimir os números de 1 a 10:

$i = 1;

while ($i <=10)

print $i++;

Tutorial PHP - 38 -

Page 39: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

Do...While

O comando do...while funciona de maneira bastante semelhante ao while, com a

simples diferença que a expressão é testada no fim do ciclo.

O comando do...while possui apenas uma sintaxe, que é a seguinte:

do {

<comando>

. . .

<comando>

} while (<expressao>);

O exemplo utilizado para ilustrar o uso do while pode ser feito da seguinte

maneira utilizando o do...while:

$i = 0;

do {

print ++$i;

} while ($i < 10);

For

O comando for já é um pouco mais complexo. Para os programadores de C, C++

ou JAVA, o funcionamento do for é bastante básico. Mas para programadores

acostumados a programar em linguagens como o PASCAL, existe uma grande mudança

na utilização do for.

Tutorial PHP - 39 -

Page 40: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

As duas sintaxes permitidas são:

for (<inicializacao>;<condicao>;<incremento>)

<comando>;

for (<inicializacao>;<condicao>;<incremento>) :

<comando>;

. . .

<comando>;

endfor;

As três expressões que ficam entre parênteses têm as seguintes finalidades:

• Inicialização:

Comando ou sequência de comandos a serem realizados antes do inicio do ciclo.

Serve para inicializar variáveis.

• Condição:

Expressão booleana que define se os comandos que estão dentro do ciclo serão

executados ou não. Enquanto a expressão for verdadeira (valor diferente de zero)

os comandos serão executados.

• Incremento:

Comando executado ao final de cada execução do ciclo.

Um comando for funciona de maneira semelhante a um while escrito da seguinte

forma:

<inicializacao>

while (<condicao>) {

comandos

...

<incremento>

}

Tutorial PHP - 40 -

Page 41: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

Break

O comando break pode ser utilizado em ciclos do, for e while, além do já

referido no comando switch. Ao encontrar um break dentro de um destes ciclos, o

interpretador PHP para imediatamente a execução do ciclo, prosseguindo a execução

normal do código seguinte ao ciclo.

while ($x > 0) {

...

if ($x == 20) {

echo “erro! x = 20”;

break;

...

}

No código anterior, o ciclo while tem uma condição de fim ($x <= 0), mas foi

utilizado o break para uma situação de fim de ciclo, não prevista inicialmente. Assim o

interpretador seguirá para a instrução seguinte ao ciclo.

Continue

O comando continue também deve ser utilizado no interior de ciclos, e funciona

de maneira semelhante ao break, com a diferença que a execução ao contrário de sair do

ciclo, volta para o seu principio.

Por exemplo:

for ($i = 0; $i < 100; $i++) {

if ($i % 2) continue;

echo “ $i “;

}

Tutorial PHP - 41 -

Page 42: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Estruturas de Controlo

O que o ciclo faz, é testar se o resto da divisão entre o número e 2 é 0. Se for

diferente de zero (valor lógico true) o interpretador encontrará um continue, que faz

com que os comandos seguintes do interior do ciclo sejam ignorados, seguindo para a

próxima iteração do ciclo.

Tutorial PHP - 42 -

Page 43: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Funções

77 FFUUNNÇÇÕÕEESS

DDeeffiinniirr ffuunnççõõeess

A sintaxe básica para definir uma função é:

function nome_da_função([arg1, arg2, arg3]) {

Comandos;

... ;

[return <valor de retorno>];

}

Qualquer código PHP válido pode estar contido no interior de uma função.

Como a verificação de tipos em PHP é dinâmica, o tipo de retorno não precisa de ser

declarado, sendo necessário que o programador esteja atento para que a função retorne o

tipo desejado. No entanto é recomendável que o código esteja bem documentado para

facilitar a sua leitura e compreensão. Para efeito de documentação, é normal utilizar-se

o seguinte formato na declaração de funções:

tipo function nome_da_funcao(tipo arg1, tipo

arg2, ...);

Este formato só deve ser utilizado na documentação do script, pois o PHP não

aceita a declaração de tipos. Isso significa que em muitos casos o programador deve

estar atento ao tipos dos valores passados como parâmetros, pois se não se passar o tipo

esperado, não é emitido qualquer aviso pelo interpretador PHP, já que este não testa os

tipos.

Tutorial PHP - 43 -

Page 44: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Funções

RReettoorrnnoo ddee VVaalloorreess

Todas as funções podem opcionalmente retornar um valor, ou simplesmente

executar os comandos e não retornar valor nenhum.

Não é possível que uma função retorne mais de um valor, mas é permitido fazer

com que uma função retorne variáveis do tipo listas ou arrays.

AArrgguummeennttooss

É possível passar argumentos para uma função. Devem ser declarados logo após

o nome da função, entre parênteses, e tornam-se variáveis pertencentes ao

endereçamento local da função. A declaração do tipo de cada argumento também é

utilizada apenas para efeito de documentação.

Exemplo:

function imprime($texto){

echo $texto;

}

imprime(“teste de funções”);

Tutorial PHP - 44 -

Page 45: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Funções

Passagem de parâmetros por referência

Normalmente, a passagem de parâmetros em PHP é feita por valor, ou seja, se o

conteúdo da variável for alterado, essa alteração não afecta a variável original.

Por exemplo:

function mais5($numero) {

$numero += 5;

}

$a = 3;

mais5($a); //$a continua com o valor 3

No exemplo anterior, como a passagem de parâmetros é por valor, a função

mais5 é inútil, já que após a execução sair da função, o valor anterior da variável é

recuperado. Se a passagem de valor for feita por referência, a variável $a teria 8 como

valor. O que normalmente acontece é que ao ser chamada uma função, o interpretador

guarda todo o endereçamento actual, ou seja, os conteúdos das variáveis. Se uma dessas

variáveis for passada como parâmetro, o seu conteúdo fica preservado, pois a função irá

trabalhar na verdade com uma cópia da variável. Porém, se a passagem de parâmetros

for feita por referência, todas as alterações que a função realizar no valor passado como

parâmetro vão afectar a variável que o contém.

Há duas maneiras de fazer com que uma função tenha parâmetros passados por

referência: indicando isso na declaração da função, o que faz com que a passagem de

parâmetros sempre seja assim; ou na própria chamada da função. Nos dois casos utiliza-

se o modificador “&”.

Tutorial PHP - 45 -

Page 46: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Funções

A seguir um exemplo que ilustra os dois casos:

function mais5(&$num1, $num2) {

$num1 += 5;

$num2 += 5;

}

$a = $b = 1;

mais5($a, $b); /* Neste caso, só $num1 terá seu valor

alterado, pois a passagem por referência está definida

na declaração da função. */

mais5($a, &$b); /* Aqui as duas variáveis terão os

seus valores alterados. */

Argumentos com valores predefinidos (default)

Em PHP é possível ter valores default para argumentos de funções, ou seja,

valores que serão assumidos em caso de nada ser passado como argumento. Quando

algum parâmetro é declarado desta maneira, a passagem do mesmo na chamada da

função torna-se opcional.

function teste($temp = “teste”) {

echo $temp;

}

teste(); // imprime “teste”

teste(“outro teste”); // imprime “outro teste”

Tutorial PHP - 46 -

Page 47: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Funções

É bom lembrar que quando a função tem mais que um parâmetro, o que tem

valor default deve ser declarado em último lugar:

function teste($figura = circulo, $cor) {

echo “a figura é um “, $figura, “ de cor “ $cor;

}

teste(azul);

/* A função não vai funcionar da maneira

esperada, ocorrendo um erro no interpretador. A

declaração correcta é: */

function teste2($cor, $figura = circulo) {

echo “a figura é um “, $figura, “ de cor “ $cor;

}

teste2(azul);

/* Aqui a função funciona da maneira esperada,

ou seja, imprime o texto: “a figura é um círculo de

cor azul” */

Tutorial PHP - 47 -

Page 48: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Funções

CCoonntteexxttoo

O contexto é o conjunto de variáveis e seus respectivos valores num

determinado ponto do programa. Na chamada de uma função, ao iniciar a execução do

bloco que contém a implementação da mesma, é criado um novo contexto contendo as

variáveis declaradas dentro do bloco, ou seja, todas as variáveis utilizadas dentro

daquele bloco serão eliminadas no fim da execução da função.

EEnnddeerreeççaammeennttoo

O endereçamento de uma variável em PHP define a parte do programa onde ela

pode ser utilizada. Na maioria dos casos todas as variáveis têm endereçamento global.

Entretanto, em funções definidas pelo utilizador um endereçamento local é criado. Uma

variável de endereçamento global não pode ser utilizada no interior de uma função sem

que haja uma declaração.

Exemplo:

$temp = “Teste”;

function Teste() {

echo $temp;

}

Teste();

O código anterior não produz nenhum resultado, pois a variável $temp é de

endereçamento global, e não pode ser referida num endereçamento local, mesmo que

não haja outra com nome igual. Para que o script funcione da forma desejada, a variável

global a ser utilizada deve ser declarada como tal.

Tutorial PHP - 48 -

Page 49: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Funções

Exemplo:

$temp = “Teste”;

function Teste() {

global $temp;

echo $temp;

}

Teste();

Uma declaração global pode conter várias variáveis, separadas por vírgulas.

Uma outra maneira de aceder variáveis de endereçamento global dentro de uma função

é utilizando um array predefinido pelo PHP cujo nome é $GLOBALS. O índice para a

variável referida é o próprio nome da variável, sem o caracter $.

O exemplo anterior, assim como o exemplo seguinte, produzem o mesmo

resultado:

Exemplo:

$temp = "Teste";

function Teste() {

echo $GLOBALS["abc"]; // imprime $temp

echo $temp; // não imprime nada

}

Teste();

Tutorial PHP - 49 -

Page 50: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

88 VVAARRIIÁÁVVEEIISS EE CCOONNSSTTAANNTTEESS

DDeeccllaarraaççããoo ddee uummaa vvaarriiáávveell

Como os tipos em PHP são tratados de uma maneira dinâmica, as variáveis não

precisam ser declaradas. Uma variável é inicializada no momento em que é feita a

primeira atribuição. O tipo da variável será definido de acordo com o valor atribuído.

OO ccoommaannddoo ssttaattiicc

Uma variável estática é visível num endereçamento local, mas é inicializada

apenas uma vez e seu valor não é perdido quando a execução do código deixa esse

endereçamento.

Por exemplo:

function Teste() {

$a = 0;

echo $a;

$a++;

}

Tutorial PHP - 50 -

Page 51: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

O último comando da função é inútil, pois assim que for terminada a execução

da função a variável $a perde seu valor. Já no exemplo seguinte, a cada chamada da

função a variável $a terá seu valor imprimido e será incrementada:

function Teste() {

static $a = 0;

echo $a;

$a++;

}

O comando static é muito utilizado em funções recursivas, já que o valor de

algumas variáveis precisa ser mantido.

Funciona da seguinte forma: O valor das variáveis declaradas como estáticas é

mantido ao terminar a execução da função. Na próxima execução da função, ao

encontrar novamente a declaração com static, o valor da variável é recuperado.

Por outras palavras, uma variável declarada como static tem o mesmo “tempo de

vida” que uma variável global, contudo a sua validade é restrita ao endereçamento local

em que foi declarada e só é recuperada após essa declaração.

Exemplo:

function Teste() {

echo "$a";

static $a = 0;

$a++;

}

O exemplo anterior não produz qualquer resultado. Na primeira execução da

função, a impressão ocorre antes da atribuição de um valor à função, e portanto o

conteúdo de $a é nulo (string vazia). Nas execuções seguintes da função Teste() a

impressão ocorre antes da recuperação do valor de $a, e portanto nesse momento o seu

valor ainda é nulo. Para que a função retorne algum valor o comando static deveria ser

utilizado.

Tutorial PHP - 51 -

Page 52: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

““VVaarriiáávveeiiss VVaarriiáávveeiiss””

O PHP tem um método conhecido como “variáveis variáveis”, que consiste em

variáveis cujos próprios nomes são também variáveis. A utilização deste método é feita

através do duplo cifrão (“$$”).

Por exemplo:

$a = “teste”;

$$a = “teste2”;

O exemplo anterior é equivalente ao seguinte:

$a = “teste”;

$teste = “teste2”;

VVaarriiáávveeiiss eennvviiaaddaass ppeelloo uuttiilliizzaaddoorr

Para interagir com o utilizador, é necessário que o PHP possa enviar e receber

informações para o programa utilizado pelo utilizador, para ler ficheiros PHP (

normalmente um browser ). O método para enviar informações, é normalmente através

de um comando de impressão, como o echo. Para receber informações vindas do

utilizador através de um link ou de um formulário HTML, o PHP utiliza as informações

enviadas através do url.

Tutorial PHP - 52 -

Page 53: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

Por exemplo:

Se o script PHP está localizado em http://localhost/teste.php3 e é executado da

seguinte forma : http://localhost/teste.php3?temp=teste , automaticamente o PHP cria

uma variável com o nome $temp contendo a string “teste”. De notar que o conteúdo da

variável está no formato URLencode. Os formulários HTML já enviam informações

automaticamente nesse formato, e o PHP descodifica-o sem necessitar de tratamento

pelo programador.

URLencode

O formato URLencode é obtido substituindo os espaços pelo caracter “+” e

todos os outros caracteres não alfanuméricos (com excepção do “_”) pelo caracter “%”

seguido do código ASCII em hexadecimal.

Por exemplo:

O texto:

Teste 1 2 3 !!

em urlencode fica:

Teste+1+2+3+%21%21

O PHP possui duas funções para facilitar o uso de urlencode.

A sintaxe é a seguinte:

string urlencode(string texto);

string urldecode(string texto);

Estas funções servem respectivamente para codificar ou descodificar um texto

passado como argumento.

Tutorial PHP - 53 -

Page 54: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

Utilizar arrays

Cada elemento de um formulário HTML submetido a um script PHP vai criar

uma variável cujo nome é o mesmo nome do elemento.

Por exemplo:

Um campo definido como:

<input type=”text” name=”endereco”>

ao ser submetido a um script PHP, vai fazer com que seja criada uma variável

com o nome $endereco. O mesmo acontece com a utilização de cookies, como veremos

mais à frente.

Uma boa técnica de programação é utilizar a notação de arrays para nomes de

cookies ou itens de um formulário HTML.

Para um conjunto de, por exemplo, checkboxs, podemos utilizar a seguinte

notação:

<input type="checkbox" name="teste[]"

value="valor1">opcao1

<input type="checkbox" name="teste[]"

value="valor2">opcao2

<input type="checkbox" name="teste[]"

value="valor3">opcao3

<input type="checkbox" name="teste[]"

value="valor4">opcao4

<input type="checkbox" name="teste[]"

value="valor5">opcao5

Tutorial PHP - 54 -

Page 55: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

Ao submeter o formulário, o script que recebe os valores terá uma variável

chamada $teste que contem os valores guardados num array, com índices a partir de

zero.

Por exemplo :

$teste == array(“valor2”, “valor3”, valor5”);

$teste[0] == “valor2;

$teste[1] == “valor3;

$teste[2] == “valor5;

O mesmo método pode ser utilizado com outros elementos de formulários e até

com cookies.

VVaarriiáávveeiiss ddee aammbbiieennttee

O PHP possui diversas variáveis de ambiente, como por exemplo a variável

$PHP_SELF, que contém o nome e a localização do próprio ficheiro.

Outras variáveis podem conter informações sobre o browser do utilizador, o

servidor HTTP, a versão do PHP e outras diversas informações. Para saber todas as

constantes e variáveis de ambiente definidas, e os respectivos conteúdos, deve-se

utilizar a função phpinfo().

Tutorial PHP - 55 -

Page 56: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

VVeerriiffiiccaannddoo oo ttiippoo ddee uummaa vvaarriiáávveell

Por causa da verificação dinâmica de tipos utilizada pelo PHP, nem sempre é

possível saber qual o tipo de uma variável num determinado instante. O PHP contém

algumas funções para facilitar essa tarefa :

string gettype(mixed var);

Esta função retorna o tipo da variável. A palavra mixed indica que a variável var

pode ser de diversos tipos.

Esta função pode retornar os seguintes valores:

• Integer

• Double

• String

• Array

• Object

• Unknown type

As funções seguintes testam o tipo da variável, e retornam true se a variável for

do tipo respectivo, ou false em caso contrário.

int is_int(mixed var);

int is_integer(mixed var);

int is_real(mixed var);

int is_long(mixed var);

int is_float(mixed var);

int is_string(mixed var);

int is_array(mixed var);

int is_object(mixed var);

Tutorial PHP - 56 -

Page 57: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

DDeessttrruuiirr uummaa vvaarriiáávveell

Se o utilizador decidir que uma determinada variável não vai ser mais utilizada,

é possível destrui-la através da função unset, que tem o seguinte sintaxe:

int unset(mixed var);

Destruir uma variável, significa libertar a memória ocupada por ela, o que faz

também que a variável deixe de ter significado para o script. Se posteriormente for feita

uma chamada á variável, será criada uma nova variável com o mesmo nome e de

conteúdo vazio.

VVeerriiffiiccaarr oo vvaalloorr ddee uummaa vvaarriiáávveell

Existem dois tipos de teste que podem ser feitos para verificar se uma variável

está declarada:

A função isset

Que tem a seguinte sintaxe:

int isset(mixed var);

Retorna true se a variável estiver declarada (mesmo que com uma string vazia

ou valor zero), e false em caso contrário.

Tutorial PHP - 57 -

Page 58: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

A função empty

Que possui a seguinte sintaxe:

int empty(mixed var);

Que retorna true se a variável não estiver declarada, ou possuir valor zero ou

uma string vazia. Caso contrário, retorna false.

Tutorial PHP - 58 -

Page 59: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Variáveis e Constantes

CCoonnssttaanntteess pprreeddeeffiinniiddaass

O PHP possui algumas constantes predefinidas, indicando a versão do PHP, o

sistema operativo do servidor, o ficheiro em execução, e diversas outras informações.

Para ter acesso a todas as constantes predefinidas, pode-se utilizar a função phpinfo(),

que apresenta uma tabela contendo todas as constantes predefinidas, assim como

configurações da máquina, sistema operacional, servidor HTTP e versão do PHP

instalada.

DDeeffiinniirr ccoonnssttaanntteess

Para definir constantes utiliza-se a função define. Uma vez definido, o valor de

uma constante não poderá mais ser alterado. Uma constante só pode conter valores

escalares, ou seja, não pode conter nem um array nem um objecto.

A sintaxe é a seguinte:

int define(string nome_da_constante, mixed valor);

A função retorna true se for bem sucedida.

Por exemplo:

define ("pi", 3.1415926536);

$circunf = 2*pi*$raio;

Tutorial PHP - 59 -

Page 60: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Classes e Objectos

99 CCLLAASSSSEESS EE OOBBJJEECCTTOOSS

CCllaasssseess

Uma classe é um conjunto de variáveis e funções relacionadas a essas variáveis.

Uma vantagem da utilização de programação orientada a objectos é poder usufruir do

encapsulamento de informação. Com o encapsulamento o utilizador de uma classe não

precisa saber como ela é implementada, bastando para a utilização conhecer a sua

interface, ou seja, as funções disponíveis. Uma classe é um tipo, e portanto não pode ser

atribuída a uma variável.

Para definir uma classe, deve-se utilizar a seguinte sintaxe:

class Nome_da_classe {

var $variavel1;

var $variavel2;

function funcao1 ($parametro) {

/* === função === */

}

}

Tutorial PHP - 60 -

Page 61: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Classes e Objectos

OObbjjeeccttoo

Classes são tipos, e não podem ser atribuídas a variáveis. Variáveis do tipo de

uma classe são chamadas de objectos, e devem ser criadas utilizando o operador new,

como no exemplo seguinte:

$variavel = new $nome_da_classe;

Para utilizar as funções definidas na classe, deve ser utilizado o operador “->”,

como no exemplo:

$variavel->funcao1(...

AA vvaarriiáávveell $$tthhiiss

Na definição de uma classe, pode-se utilizar a variável $this, que é o próprio

objecto. Assim, quando uma classe é instanciada num objecto, e uma função desse

objecto na definição da classe utiliza a variável $this, essa variável significa o próprio

objecto que estamos a utilizar.

Tutorial PHP - 61 -

Page 62: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Classes e Objectos

Como exemplo da utilização de classes e objectos, podemos utilizar a classe

conta, que define uma conta bancária bastante simples, com funções para ver saldo e

fazer um crédito.

class conta {

var $saldo;

function saldo() {

return $this->saldo;

}

function credito($valor) {

$this->saldo += $valor;

}

}

$minhaconta = new conta;

$minhaconta->saldo(); // a variável interna não foi

// inicializada, e não contém

// nenhum valor

$minhaconta->credito(50);

$minhaconta->saldo(); // retorna 50

Tutorial PHP - 62 -

Page 63: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Classes e Objectos

SSuubbCCllaasssseess

Uma classe pode ser uma extensão de outra. Isso significa que a nova classe vai

herdar todas as variáveis e funções da classe inicial, e ainda pode ter mais variáveis ou

funções que podem ser adicionadas pelo programador. Em PHP não é permitido utilizar

herança múltipla, ou seja, uma classe pode ser extensão de apenas uma outra classe.

Para criar uma classe derivada de outra, deve ser utilizada a palavra reservada extends,

como pode ser visto no exemplo seguinte:

class novaconta extends conta {

var $num;

function numero() {

return $this->num;

}

}

A classe anterior é derivada da classe conta, tendo as mesmas funções e

variáveis, com a adição da variável $numero e a função numero().

Tutorial PHP - 63 -

Page 64: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Classes e Objectos

CCoonnssttrruuttoorreess

Um construtor é uma função definida na classe que é automaticamente invocada

no momento em que a classe é instanciada (através do operador new). O construtor deve

ter o mesmo nome que a classe a que pertence.

Por exemplo:

class conta {

var $saldo;

function conta () {

$this.saldo = 0;

}

function saldo() {

return $this->saldo;

}

function credito($valor) {

$this->saldo += $valor;

}

}

De notar que a classe conta possui agora um construtor, que cria a variável

$saldo com o valor 0.

Um construtor pode conter argumentos, que são opcionais.

No exemplo anterior, o construtor da classe conta pode receber como argumento

um valor, que seria o valor inicial da conta.

Para classes derivadas, o construtor da classe inicial não é automaticamente

herdado quando o construtor da classe derivada é invocado.

Tutorial PHP - 64 -

Page 65: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Noções de SQL

1100 NNOOÇÇÕÕEESS DDEE SSQQLL

IInnttrroodduuççããoo

Quando as bases de dados relacionais foram desenvolvidas, foram criadas

linguagens destinadas à sua manipulação. O departamento de pesquisas da IBM,

desenvolveu a linguagem SQL como forma de obter um interface para o sistema de base

de dados relacional denominado SYSTEM R (início dos anos 70). Em 1986 o American

National Standard Institute (ANSI ), publicou um standard SQL.

A linguagem SQL estabeleceu-se como linguagem standard em bases de dados

relacionais.

A linguagem SQL apresenta uma série de comandos que permitem a definição

dos dados, chamada de DDL (Data Definition Language), composta, entre outros, pelos

comandos Create, que é destinado à criação da base de dados, das tabelas respectivas, e

também das relações existentes entre as tabelas. Como exemplo de comandos da classe

DDL temos os comandos Create, Alter e Drop.

Os comandos da série DML (Data Manipulation Language) são destinados a

consultas, inserções, remoções e alterações em um ou mais registros de uma ou mais

tabelas de forma simultânea. Como exemplo de comandos da classe DML temos os

comandos Select, Insert, Update e Delete.

Tutorial PHP - 65 -

Page 66: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Noções de SQL

Uma subclasse de comandos DML, a DCL (Data Control Language), dispõe de

comandos de controle como Grant e Revoke.

A linguagem SQL tem como grande vantagem a capacidade de gerir índices,

sem a necessidade de controle individualizado do índice actual, algo muito comum nas

linguagens de manipulação de dados do tipo registro a registro. Outra característica

muito importante disponível em SQL, é a capacidade de construção de consultas, que

consiste num método de visualizar os dados em forma de listagens independentes das

tabelas e da organização lógica dos dados.

Outra característica interessante da linguagem SQL é a capacidade de cancelar

uma série de actualizações ou de as gravar, depois de iniciar uma sequência de

actualizações. Para isso utiliza-se os comandos Commit e Rollback.

De notar que a linguagem SQL consegue implementar estas soluções, pelo facto

de estar baseada em bases de dados que garantem, por si mesmo, a integridade das

relações existentes entre as tabelas e os seus índices.

Tutorial PHP - 66 -

Page 67: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Noções de SQL

CCoommaannddooss BBáássiiccooss ddee SSQQLL

Comando Create

Este comando permite criar tabelas na base de dados ou mesmo a sua criação.

Sintaxe:

CREATE DATABASE < nome_db >;

onde:

nome_db - indica o nome da base de dados a ser criada.

Sintaxe:

CREATE TABLE < nome_tabela > (

nome_campo1 < tipo > [ NOT NULL ],

nome_campo2 < tipo > [ NOT NULL ],

......

nome_campoN < tipo > [ NOT NULL ]

) ;

onde:

nome_tabela - indica o nome da tabela a ser criada.

nome_campo - indica o nome do campo a ser criado na tabela.

tipo - indica o tipo de variável ( integer(n), char(n), ... ).

Tutorial PHP - 67 -

Page 68: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Noções de SQL

Comando Drop

Este comando elimina a definição da tabela, incluindo os dados e referências

correspondentes.

Sintaxe:

DROP TABLE < nome_tabela > ;

Comando Alter

Este comando permite inserir ou eliminar campos nas tabelas já existentes.

Sintaxe:

ALTER TABLE < nome_tabela > ADD / DROP (

nome_campo1 < tipo > [ NOT NULL ],

nome_campoN < tipo > [ NOT NULL ]

) ;

Tutorial PHP - 68 -

Page 69: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Noções de SQL

MMaanniippuullaarr ddaaddooss ddaass ttaabbeellaass

Comando SELECT

Permite obter informações existentes nas tabelas.

Sintaxe básica:

SELECT [DISTINCT] expressao [AS nome-campo]

[FROM from-list]

[WHERE condicao]

[ORDER BY attr_name1 [ASC | DESC ]]

onde:

DISTINCT – Serve para eliminar linhas duplicadas na saída;

expressao - Define os dados que queremos obter, normalmente uma ou mais

colunas de uma tabela;

AS nome-campo - o nome do campo pretendido;

FROM from-list - lista das tabelas de entrada;

WHERE condicao - Critérios da selecção;

ORDER BY attr_name1 - Critério de ordenação dos resultados:

ASC ordem ascendente, DESC ordem descendente.

Exemplo:

SELECT nome, idade FROM pessoas WHERE idade > 17;

Tutorial PHP - 69 -

Page 70: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Noções de SQL

Comando INSERT

Adiciona um ou vários registros a uma tabela.

Sintaxe básica:

INSERT INTO destino [(campo1[, campo2[, ...]])]

VALUES (valor1[, valor2[, ...])

onde :

destino - Nome da tabela onde os registros devem ser inseridos;

campo1, campo2 - Nomes dos campos onde os dados vão ser inseridos;

valor1, valor2 - Os valores para inserir nos campos respectivos, no novo

registro. Cada valor é inserido no campo que corresponde à posição do valor na

lista: valor1 é inserido no campo1 do novo registro, valor2 no campo2 e assim

sucessivamente.

Os valores devem ser separados com uma vírgula e os campos de texto

colocados entre aspas (" ").

Comando UPDATE

Este comando serve para actualizar os valores dos campos numa determinada

tabela da base de dados.

Sintaxe:

UPDATE tabela

SET campo1 = novovalor, ...

WHERE criterio;

Tutorial PHP - 70 -

Page 71: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Noções de SQL

Onde:

tabela - Nome da tabela que contém os dados a alterar;

campo1 – Campo que vai ser alterado;

novovalor - Expressão que determina o novo valor a inserir;

criterio - Expressão que determina quais os registros a ser alterados.

O comando UPDATE é especialmente útil quando é necessário alterar

muitos registros ou quando os registros a alterar estão em várias tabelas. Pode-se alterar

vários campos ao mesmo tempo.

Comando DELETE

Elimina registros de uma ou mais tabelas.

Sintaxe:

DELETE [tabela.*]

FROM tabela

WHERE criterio

onde:

tabela.* - O nome opcional da tabela da qual os registros são eliminados.

tabela - O nome da tabela da qual os registros são eliminados.

criterio - Expressão que determina qual ou quais os registros a eliminar.

Tutorial PHP - 71 -

Page 72: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Noções de SQL

O comando DELETE é especialmente útil quando se quer excluir muitos

registros. Para eliminar uma tabela inteira da base de dados, pode-se usar o método

execute, com uma operação DROP.

No entanto, se a tabela for eliminada, a estrutura é perdida. Ao usar o DELETE,

apenas os dados são removidos. A estrutura da tabela e todas as suas propriedades,

como campos e índices, permanecem intactos.

O DELETE elimina registros inteiros e não apenas dados em campos

específicos. Para eliminar valores de um campo específico, deve-se utilizar o UPDATE,

e alterar os valores para null.

Tutorial PHP - 72 -

Page 73: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Aceder ao mySQL via PHP

1111 AACCEEDDEERR AAOO MMYYSSQQLL VVIIAA PPHHPP

EEssttaabbeelleecceerr ccoonneexxõõeess

Para aceder a bases de dados num servidor mySQL, é necessário primeiro

estabelecer uma conexão. Para isso, deve ser utilizado o comando mysql_connect, ou o

mysql_pconnect. A diferença entre os dois comandos é que o mysql_pconnect estabelece

uma conexão permanente, ou seja, que não é terminada no fim da execução do script.

As sintaxes dos dois comandos são semelhantes:

int mysql_connect(string [host[:port]] , string

[login] , string [password] );

int mysql_pconnect(string [host[:port]] , string

[login] , string [password] );

Ambos os comandos retornam um valor inteiro que identifica a conexão, ou

false se a conexão falhar. Antes de tentar estabelecer uma conexão, o interpretador PHP

verifica se já existe uma conexão estabelecida com o mesmo host, o mesmo login e a

mesma password. Se existir, o identificador desta conexão é devolvido. Senão, uma

nova conexão é criada.

Tutorial PHP - 73 -

Page 74: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Aceder ao mySQL via PHP

Uma conexão estabelecida com o comando mysql_connect é terminada no fim

da execução do script. Para terminar a conexão antes do fim do script, deve ser utilizado

o comando mysql_close, que tem a seguinte sintaxe:

int mysql_close(int [identificador da conexão] );

Se o identificador não for fornecido, será terminada a última conexão

estabelecida.

De notar que o comando mysql_close não termina conexões estabelecidas com o

comando mysql_pconnect.

SSeelleecccciioonnaarr aa bbaassee ddee ddaaddooss

Depois de estabelecida a conexão, é preciso seleccionar a base de dados que vai

ser utilizada. Para isso utiliza-se o comando mysql_select_db.

Tem o seguinte sintaxe:

int mysql_select_db(string base, int [conexao] );

Novamente, se o identificador da conexão não for fornecido, a última conexão

estabelecida será a utilizada.

Tutorial PHP - 74 -

Page 75: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Aceder ao mySQL via PHP

RReeaalliizzaarr ccoonnssuullttaass

Para executar consultas SQL no mySQL, utiliza-se o comando mysql_query, que

tem o seguinte sintaxe:

int mysql_query(string query, int [conexao] );

Onde query é a expressão SQL a ser executada, e conexão é o identificador de

conexão a ser utilizado. A consulta será executada na base de dados seleccionada pelo

comando mysql_select_db.

É bom lembrar que uma consulta não significa apenas um comando SELECT. A

consulta pode conter qualquer comando SQL.

O comando retorna valor false se a expressão SQL for incorrecta, e diferente de

zero se for correcta. No caso de uma expressão SELECT, os resultados são armazenados

numa “memória de resultados”, e o valor de retorno é o identificador desse resultado.

Alguns comandos podem ser realizados com esse identificador:

Apagar o resultado

int mysql_free_result(int result);

O comando mysql_free-result deve ser utilizado para apagar da memória o

resultado respectivo.

Tutorial PHP - 75 -

Page 76: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Aceder ao mySQL via PHP

Retornar o número de linhas

int mysql_num_rows(int result);

O comando mysql_num_rows retorna o número de linhas existentes no

resultado.

Utilizar os resultados

Existem diversas formas de ler os resultados de um SELECT.

As mais comuns são as seguintes:

int mysql_result(int result, int linha, mixed [campo]

);

Retorna o conteúdo de uma célula da tabela de resultados, onde:

result - é o identificador do resultado;

linha - é o número da linha;

campo - é uma string com o nome do campo, ou um número correspondente ao

número da coluna.

Este comando deve ser utilizado apenas para resultados de pequena dimensão.

Quando o volume de dados for maior, é recomendado utilizar um dos seguintes

métodos:

array mysql_fetch_array(int result);

Lê uma linha do resultado e devolve um array, cujos índices são os nomes dos

campos. Se for executado de seguida o mesmo comando, será feita a leitura da próxima

linha, e assim sucessivamente até chegar ao fim da tabela de resultados.

Tutorial PHP - 76 -

Page 77: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Aceder ao mySQL via PHP

array mysql_fetch_row(int result);

Semelhante ao comando anterior, com a diferença que os índices do array são

numéricos, iniciando por 0 (zero).

Alterar o ponteiro de um resultado

int mysql_data_seek(int result, int numero);

Cada resultado possui um ponteiro, que indica qual será a próxima linha lida

com o comando mysql_fetch_row ou mysql_fetch_array. Para alterar a posição indicada

por esse ponteiro deve-se utilizar a função mysql_data_seek, sendo que o número da

primeira linha de um resultado é 0 (zero).

Tutorial PHP - 77 -

Page 78: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Utilizar Cookies

1122 UUTTIILLIIZZAARR CCOOOOKKIIEESS

OO qquuee ssããoo CCooookkiieess??

Cookies são variáveis gravadas no browser por um determinado site. Apenas o

site que gravou o cookie pode ler a informação nele contida. Este recurso é muito útil

para que determinadas informações sejam fornecidas ao utilizador apenas uma vez.

Como exemplos de utilização de cookies, pode-se referir sites que informam a

quantidade de vezes que já foi visitado pelo próprio utilizador, ou alguma informação

importante que é fornecida apenas na primeira visita.

Existem cookies persistentes e cookies de sessão. Os persistentes são gravados

em ficheiros, e permanecem após o browser ser fechado, possuindo data e hora de

expiração. Os cookies de sessão não são armazenados em disco e permanecem activos

apenas enquanto a sessão do browser não for encerrada.

Por definição, existem algumas limitações para o uso de cookies, como por

exemplo:

• 300 cookies no total

• 4 kilobytes por cookie.

• 20 cookies por servidor ou domínio.

Tutorial PHP - 78 -

Page 79: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Utilizar Cookies

GGrraavvaarr CCooookkiieess

Para gravar cookies no cliente, deve ser utilizada a função setcookie, que possui

a seguinte sintaxe:

int setcookie(string nome, string valor, int exp,

string path, string dominio, int secure);

onde:

nome - nome do cookie;

valor - valor armazenado no cookie;

exp - data de expiração do cookie. Se não for definida, o cookie será de sessão;

path - localização do script que gravou o cookie;

dominio - domínio responsável pelo cookie;

secure - se tiver valor 1, indica que o cookie só pode ser transmitido por uma

conexão segura (HTTPS).

Observações:

Um cookie não pode ser recuperado na mesma página que o gravou, a menos

que esta seja recarregada pelo browser.

Múltiplas chamadas à função setcookie serão executadas em ordem inversa.

Cookies só podem ser gravados antes do envio de qualquer informação para o

cliente. Portanto todas as chamadas à função setcookie devem ser feitas antes do envio

de qualquer cabeçalho ou texto.

Tutorial PHP - 79 -

Page 80: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Utilizar Cookies

LLeerr CCooookkiieess

Os cookies lidos por um script PHP ficam armazenados em duas variáveis: no

array $HTTP_COOKIE_VARS[], tendo como índice a string do nome do cookie, e

numa variável cujo nome é o mesmo do cookie, precedido pelo símbolo $.

Por exemplo:

Um cookie gravado numa página anterior pelo seguinte comando:

setcookie(“teste”, “meu cookie”);

pode ser lido pela variável:

$HTTP_COOKIE_VARS[“teste”]

ou pela variável:

$teste

Tutorial PHP - 80 -

Page 81: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

1133 FFIICCHHEEIIRROOSS

Através do PHP é possível ter acesso aos ficheiros do sistema, e até a ficheiros

remotos. A seguir, alguns comandos utilizados para trabalhar com ficheiros em PHP.

CCooppiiaarr FFiicchheeiirrooss

Para copiar um ficheiro utilizando PHP, basta utilizar a função copy. É

obviamente necessário que o utilizador tenha as permissões necessárias para isso.

A sintaxe da função copy é a seguinte:

int copy(string origem string destino);

De notar que as strings relativas à origem e ao destino devem incluir as

localizações completas (por exemplo: “c:\teste\imagem.jpg”). Este comando retorna

false caso a cópia não tenha sucesso.

Tutorial PHP - 81 -

Page 82: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

VVeerriiffiiccaarr oo ttaammaannhhoo ddee uumm ffiicchheeiirroo

A função filesize pode ser bastante útil na criação de um script que, por

exemplo, imprima o conteúdo de um directório, mas também é utilizada noutras

situações, como por exemplo no uso da função fread, que será tratada mais à frente.

int filesize(string ficheiro);

Esta função retorna um inteiro com o tamanho do ficheiro (em bytes), ou false

em caso de erro.

VVeerriiffiiccaarr ssee uumm ffiicchheeiirroo eexxiissttee

Para evitar erros em tratamento de ficheiros, é sempre aconselhável verificar se

o ficheiro ou os ficheiros a tratar realmente existem. Para isso deve ser utilizada a

função file_exists.

Sintaxe:

int file_exists(string ficheiro);

Esta função retorna apenas true ou false, não fornecendo informações adicionais

sobre o ficheiro.

Tutorial PHP - 82 -

Page 83: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

LLiimmppaarr oo ccaacchhee

Por terem execução lenta, algumas funções que verificam o estado de ficheiros

utilizam um cache, ou seja, chamadas sucessivas da mesma função com relação ao

mesmo ficheiro não verificam se houve mudança no mesmo, retornando sempre o

mesmo valor. Para eliminar esse cache, de forma a obrigar o PHP a reavaliar o real

valor de uma função, deve-se utilizar a seguinte função:

void clearstatcache();

A palavra void indica que a função não retorna nenhum valor.

De notar que as funções filesize e file_exists utilizam cache.

AAbbrriirr ffiicchheeiirrooss ppaarraa lleeiittuurraa ee//oouu eessccrriittaa

Para ler ou escrever num ficheiro é preciso, em primeiro lugar, fazer a sua

abertura. Para isso deve ser utilizada a função fopen, que tem o seguinte sintaxe:

int fopen(string ficheiro, string modo, int

[use_include_path]);

A função fopen retorna false em caso de erro, e um identificador do ficheiro em

caso de sucesso. Esse identificador será utilizado por outras funções utilizadas para

trabalhar com ficheiros.

Tutorial PHP - 83 -

Page 84: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

O primeiro argumento é uma string contendo o nome do ficheiro; o segundo, o

modo como o ficheiro será aberto, que pode ser um dos seguintes:

r Abre o ficheiro com permissão apenas para leitura.

r+ Abre o ficheiro com permissão para escrita e leitura, posicionando o

ponteiro no início do mesmo.

w Abre o ficheiro com permissão apenas para escrita. Se o ficheiro existir,

todo o conteúdo é apagado. Se não existir, o PHP tenta criá-lo. O ponteiro

é posicionado no início do ficheiro

w+ Abre o ficheiro com permissão para escrita e leitura. Se o ficheiro existir,

todo o conteúdo é apagado. Se não existir, o PHP tenta criá-lo. O ponteiro

é posicionado no início do ficheiro

a Abre o ficheiro com permissão apenas para escrita. Se o ficheiro não

existir, o PHP tenta criá-lo. O ponteiro é posicionado no final do ficheiro

a+ Abre o ficheiro com permissão para escrita e leitura. Se o ficheiro não

existir, o PHP tenta criá-lo. O ponteiro é posicionado no final do ficheiro.

O ponteiro refere-se à posição a partir da qual os dados serão lidos e/ou

gravados. Para alterar a posição desse ponteiro, pode-se utilizar a função fseek.

Sintaxe:

int fseek(int fp, int posição);

Onde fp é o identificador de ficheiro, obtido através da utilização da função

fopen.

O terceiro parâmetro da função fopen, que pode ter valor “0” ou “1”, indica se o

include_path deverá ser utilizado para localizar o ficheiro. O include_path é um

parâmetro especificado no ficheiro php.ini que indica exactamente em que directórios

determinados ficheiros devem ser procurados.

Tutorial PHP - 84 -

Page 85: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

Além de trabalhar ficheiros localmente, utilizando o sistema de ficheiros, a

função fopen também permite trabalhar com ficheiros remotos, utilizando os protocolos

HTTP ou FTP, da seguinte forma:

Se a string, como por exemplo o nome do ficheiro, iniciar por “http://”

(maiúsculas ou minúsculas), uma conexão é aberta com o servidor e o ficheiro

respectivo será aberto, utilizando o protocolo HTTP.

De notar que qualquer alteração feita no ficheiro afectará apenas o ficheiro

temporário local, sendo o original sempre preservado.

Se a string iniciar por “ftp://”, uma conexão é aberta com o servidor e o ficheiro

será aberto, desta vez utilizando o protocolo FTP. Utilizando FTP o ficheiro pode ser

aberto para leitura ou escrita, mas não simultaneamente.

Para terminar a utilização de um ficheiro deve-se utilizar a função fclose, que

tem a seguinte sintaxe:

int fclose(int fp);

Onde fp é o identificador do ficheiro, obtido através da função fopen.

Tutorial PHP - 85 -

Page 86: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

LLeerr uumm ffiicchheeiirroo

Para ler um ficheiro pode-se utilizar a função fread, que tem a seguinte sintaxe:

string fread(int fp, int tamanho);

Esta função retorna uma string com o conteúdo do ficheiro. O segundo

parâmetro determina até onde o ficheiro será lido. Se tamanho for maior que o tamanho

do ficheiro, não ocorre erro, e é retornado o ficheiro na sua totalidade.

Na maioria dos casos a função filesize pode ser bastante útil, para determinar o

tamanho do ficheiro que se vai ler.

Por exemplo:

$meuficheiro = “c:\teste.txt”;

$id = fopen($ficheiro, “r”);

$conteudo = fread($id,filesize($ficheiro));

A função fread é binary-safe, ou seja, pode ser usada para ler o conteúdo de um

ficheiro binário. Obviamente que nesse caso é preciso saber exactamente onde utilizar

os dados obtidos.

Tutorial PHP - 86 -

Page 87: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

EEssccrreevveerr nnuumm ffiicchheeiirroo

A função fwrite é usada para escrever em ficheiros, e tem a seguinte sintaxe:

int fwrite(int fp, string conteudo, int [tamanho]);

Esta função grava num ficheiro o conteúdo do segundo parâmetro. Se tamanho

for fornecido e menor que o tamanho da string, será feita a gravação apenas de uma

parte da mesma, determinada pelo terceiro parâmetro.

Tutorial PHP - 87 -

Page 88: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

EExxeemmpplloo

O exemplo seguinte demonstra a leitura de um ficheiro. Este exemplo necessita

apenas de uma imagem do tipo GIF, que deve estar no mesmo directório do script de

exemplo.

<?

$ficheiro = “teste.gif”; /* nome do ficheiro GIF

a ser utilizado */

$id = fopen($ficheiro, “r”); /* abre o ficheiro

para leitura */

$conteudo = fread($id,filesize($ficheiro)); /* lê

o conteúdo do ficheiro e grava-o na variável

$conteudo */

fclose($id); /* fecha o ficheiro */

header(“Content-type: image/gif”); /* esta linha

envia um header ao browser informando que o tipo

de ficheiro que está a ser enviado é uma imagem

no formato GIF */

echo $conteudo; /* esta última linha envia ao

browser o conteúdo do ficheiro */

?>

Se o script for executado sem erros, deverá ser visualizada no browser a imagem

escolhida.

Tutorial PHP - 88 -

Page 89: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Ficheiros

UUppllooaaddss ccoomm ffoorrmmuulláárriiooss HHTTMMLL

Os formulários HTML têm um tipo de componente utilizado para upload de

ficheiros. Os elementos dos formulários quando submetidos a scripts PHP criam

variáveis com os mesmos nomes, mas no caso do elemento file, o tratamento é

diferente.

Ao ser submetido o formulário, o ficheiro é gravado num ficheiro temporário no

disco, que será apagado ao final da execução do script. Além disso, quatro variáveis são

criadas no contexto do script PHP.

$meuficheiro – nome do ficheiro temporário criado;

$meuficheiro_name – nome original do ficheiro seleccionado pelo utilizador;

$meuficheiro_size – tamanho do ficheiro enviado;

$meuficheiro_type – tipo do ficheiro, se esta informação for fornecida pelo

browser;

Para armazenar o conteúdo de um ficheiro numa tabela da base de dados ou até

num ficheiro definitivo, podemos utilizar o seguinte script. Para o seguinte exemplo

vamos supor que o campo do formulário tem o nome teste:

<?

$id = fopen($teste, “r”); /* abre o ficheiro para

leitura */

$teste_conteudo = fread($id,filesize($teste)); /* lê o

conteúdo do ficheiro e grava na variável $conteudo */

fclose($id); /* fecha o ficheiro */

?>

Assim, teremos o conteúdo do ficheiro enviado armazenado na variável

$teste_conteudo, que pode assim ser armazenado onde for mais adequado.

Tutorial PHP - 89 -

Page 90: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Enviar um e-mail

1144 EENNVVIIAARR UUMM EE--MMAAIILL

Para enviar um e-mail através de um script PHP é bastante simples. Basta

utilizar a função mail:

Sintaxe :

mail(string to, string subject, string message, string

[headers]);

onde:

to – string contendo o e-mail do destinatário;

subject – o assunto da mensagem;

message – o corpo da mensagem;

headers – outras informações do cabeçalho, como por exemplo from, reply-to,

bcc, etc.

Para facilitar a compreensão dos scripts, os argumentos (como geralmente são

strings com um tamanho significativo) devem ser atribuídos a variáveis, antes da

chamada da função mail.

Tutorial PHP - 90 -

Page 91: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 1

1155 CCOONNCCLLUUSSÃÃOO

Ao longo deste trabalho, tentei fazer uma explicação simples e prática sobre a

linguagem PHP.

Penso que esses objectivos foram atingidos, e espero que este documento seja

uma boa ajuda para um programador que pretenda iniciar a programação nesta

linguagem.

Quanto à linguagem em si, é preciso não esquecer que o PHP é ainda uma

linguagem relativamente recente, e em constante evolução. De notar por exemplo a falta

uma ferramenta para debug, ou um tratamento de erros mais sofisticado, como por

exemplo existe em linguagens como ASP ou Cold Fusion.

Apesar disso, o PHP revelou-se uma linguagem bastante prática e acessível, e

que permite trabalhar com áreas bastante interessantes, como a manipulação de ficheiros

e de cookies, integração com bases de dados, envio de e-mails, etc.

Como foi referido, este trabalho tinha como objectivo apenas uma introdução a

esta interessante linguagem, por isso queria deixar em aberto toda a capacidade do PHP

que falta ainda explorar, como por exemplo o tratamento de imagens e outras

capacidades mais avançadas.

Em termos pessoais, este trabalho foi bastante gratificante, principalmente sendo

esta uma área de grande interesse para mim. A elaboração deste documento

proporcionou-me boas bases de PHP, que muito certamente vai ser uma ferramenta

valiosa no decorrer da minha vida profissional.

Tutorial PHP - 91 -

Page 92: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 1

1166 AAPPÊÊNNDDIICCEE 11

IInnssttaallaaççããoo ee ccoonnffiigguurraaççããoo ddoo AAppaacchhee (( WWiinnddoowwss ))

O servidor HTTP Apache, está disponível para download em :

http://www.apache.org/httpd.html

A instalação do Apache é bastante simples, semelhante a qualquer aplicação

windows. A única restrição é que o winsock2 deve estar instalado no sistema. Se não

estiver, o download pode ser feito em:

http://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wu

networkingtools/w95sockets2/

Depois de instalado, é necessário fazer a configuração do servidor, através do

ficheiro httpd.conf. Todas as configurações estão comentadas. O mínimo que tem de ser

configurado é o directório onde os documentos vão ficar guardados, através da opção

DocumentRoot. Basta procurar essa opção e escrever o nome do directório, como no

exemplo:

DocumentRoot "C:\HTTPserver\"

Tutorial PHP - 92 -

Page 93: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 1

Uma outra configuração básica é especificação da variável DirectoryIndex, que

informa o servidor quais os ficheiros que serão exibidos automaticamente como índice

do directório. É isso que faz com que ao escrever, por exemplo, www.teste.pt, o servidor

saiba qual dos ficheiros do directório deve ser executado. Um exemplo da utilização do

DirectoryIndex:

DirectoryIndex index.html index.htm index.php3

A seguir, deve-se criar um ficheiro com um dos nomes definidos como índice e

coloca-lo no directório raiz do servidor.

Depois deve-se executar o servidor Apache e tentar aceder ao endereço

“http://localhost” pelo browser. Se a página for exibida, é porque o servidor foi

instalado correctamente.

Tutorial PHP - 93 -

Page 94: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 2

1177 AAPPÊÊNNDDIICCEE 22

IInnssttaallaaççããoo ee ccoonnffiigguurraaççããoo ddoo PPHHPP (( WWiinnddoowwss ))

O download do PHP pode ser feito em :

http://www.php.net/

e sua instalação é também bastante simples. Basta descompactar os ficheiros

para o directório de destino (por exemplo c:\php3) e editar o ficheiro de configuração.

O ficheiro php3.ini-dist deve ser copiado para o directório do windows

(normalmente c:\windows ou c:\winnt) com o nome php3.ini. Depois de copiado, o

ficheiro pode ser editado, bastando modificar a linha onde se encontra a variável

extension_dir, que deve conter o directório onde estão os módulos (c:\php3).

Por exemplo:

extension_dir = c:\php3

Se for pretendido utilizar a base de dados mySQL, deve-se activar a linha

referente ao módulo respectivo. Basta tirar o “;” (ponto e vírgula) do início da linha:

;extension=php3_mysql.dll

Tutorial PHP - 94 -

Page 95: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 2

A seguir, pode-se começar a configuração do servidor Apache, necessária para

que este reconheça o PHP. Editando novamente o ficheiro httpd.conf.

As linhas seguintes devem ser adicionadas no fim do ficheiro:

ScriptAlias /php3/ "c:/php3/"

AddType application/x-httpd-php3 .php3 .php

Action application/x-httpd-php3 "/php3/php.exe"

A primeira linha define o directório onde está o PHP.

A segunda cria um tipo para o PHP, e define que todos os ficheiros com as

extensões .php3 e .php devem passar pelo interpretador PHP.

A terceira linha define o executável do interpretador PHP.

De seguida pode-se testar se a instalação do PHP foi bem concluída. A melhor

forma de o testar é criar um ficheiro chamado teste.php3 e colocá-lo no directório raiz

do servidor Apache. O ficheiro deve conter a seguinte informação:

<?

phpinfo();

?>

Se for feito o acesso à página, através do browser (http://localhost/teste.php3),

deve-se ter como resultado uma lista com todas as configurações do PHP, incluindo o

módulo mySQL, que foi definido como activo no ficheiro php3.ini.

Se for visível essa lista, então o PHP foi instalado com sucesso.

Tutorial PHP - 95 -

Page 96: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 3

1188 AAPPÊÊNNDDIICCEE 33

IInnssttaallaaççããoo ee ccoonnffiigguurraaççããoo ddoo mmyySSQQLL (( WWiinnddoowwss ))

A base de dados mySQL pode ser encontrada em:

http://www.mysql.com/download.html

A sua instalação é bastante simples, também no modelos de instalação de

qualquer programa para windows.

As configurações necessárias são relativas à segurança, e exigem um

conhecimento mais avançado de administração de servidores. Como o objectivo deste

documento é apenas o ensino da linguagem PHP, não é necessário fazer muitas

alterações na segurança, bastando referir como adicionar utilizadores.

Para isso, basta utilizar o comando GRANT, que tem a seguinte sintaxe:

GRANT <permissão> [(lista_colunas)]

[,<permissão> [(colunas)] ...]

ON {tabela | * | *.* | db.*}

TO <utilizador> [IDENTIFIED BY <password>]

[,<utilizador> [IDENTIFIED BY <password>] ...]

[WITH GRANT OPTION]

Tutorial PHP - 96 -

Page 97: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 3

Onde permissão é uma das palavras reservadas referidas na tabela seguinte:

ALL PRIVILEGES

FILE

RELOAD

ALTER

INDEX

SELECT

CREATE

INSERT

SHUTDOWN

DELETE

PROCESS

UPDATE

DROP

REFERENCES

USAGE

Cada palavra representa um tipo de acesso à(s) coluna(s), tabela(s) ou base(s) de

dados referidas a seguir a ON.

Utilizador deve conter o nome do utilizador (login) e o host permitido.

Por exemplo: teste@localhost

Exemplo da utilização do comando GRANT:

GRANT SELECT, INSERT, UPDATE ON *

TO user1@localhost IDENTIFIED BY “1z2x3c”;

O exemplo anterior cria o utilizador user1, com a password 1z2x3c, que só pode

aceder do endereço localhost, e está limitado a utilizar os comandos select, insert e

update.

Também é possível adicionar utilizadores através do comando INSERT, para

alterar directamente na tabela de permissões, que é a tabela user da base de dados, que

por sua vez possui os campos para definir o utilizador, host, password, e respectivas

permissões específicas.

Tutorial PHP - 97 -

Page 98: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 4

1199 AAPPÊÊNNDDIICCEE 44

CCoommaannddooss bbáássiiccooss ddee mmyySSQQLL

Iniciar o mySQL em background

shell> mysqld

Fazer o login no mySQL como root

shell> mysql -u root -proot_password

Adicionar um novo utilizador

mysql> GRANT ALL PRIVILEGES ON *.* TO

novo_utilizador@localhost

> IDENTIFIED BY 'password' WITH GRANT OPTION;

Exemplo:

mysql> GRANT ALL PRIVILEGES ON *.* TO user1@localhost

-> IDENTIFIED BY '1z2c' WITH GRANT OPTION;

Query OK, 0 rows affected (0.33 sec)

mysql> exit;

Tutorial PHP - 98 -

Page 99: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 4

Fazer o login com o nome e password do utilizador criado

shell> mysql -u NOVO_UTILIZADOR –p PASSWORD

Criar uma base de dados chamada teste

mysql> CREATE DATABASE teste;

Query OK, 1 row affected (0.11 sec)

Tornar essa base de dados, a base de dados activa

mysql> use teste;

Database changed

Criar tabela tabelateste na base de dados teste, com os seguintes campos:

mysql> CREATE TABLE tabelateste (

-> nome VARCHAR(15),

-> email VARCHAR(25),

-> tel INT,

-> ID INT NOT NULL AUTO_INCREMENT,

-> PRIMARY KEY (ID));

Query OK, 0 rows affected (0.22 sec)

Tutorial PHP - 99 -

Page 100: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 4

Mostrar tabelas existentes na base de dados teste

mysql> show tables;

--------------------

| Tables in teste |

--------------------

| tabelateste |

--------------------

1 row in set (0.05 sec)

Mostrar definições da tabela tabelateste

mysql> show columns from tabelateste;

-------------------------------------------------------------------------------

| Field | Type | Null | Key | Default | Extra |

-------------------------------------------------------------------------------

| nome | varchar(15) | YES | | NULL | |

| email | varchar(25) | YES | | NULL | |

| tel | int(11) | YES | | NULL | |

| ID | int(11) | | PRI | 0 | auto_increment |

-------------------------------------------------------------------------------

4 rows in set (0.11 sec)

Inserir valores na tabela tabelateste:

mysql> INSERT INTO tabelateste VALUES

-> ('nome','nome@localhost',1234567,NULL);

Query OK, 1 row affected (0.16 sec)

Tutorial PHP - 100 -

Page 101: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 4

Listar o todos registos da tabela tabelateste

mysql> SELECT * FROM tabelateste;

----------------------------------------------------

| nome | email | tel | ID |

----------------------------------------------------

| nome | nome@localhost | 1234567 | 1 |

----------------------------------------------------

1 rows in set (0.00 sec)

Listar todos os registos onde o ID tem o número 1

mysql> select * from tabelateste where ID=1;

----------------------------------------------------

| nome | email | tel | ID |

----------------------------------------------------

| nome | nome@localhost | 1234567 | 1 |

----------------------------------------------------

1 rows in set (0.00 sec)

Apagar um registo

mysql> DELETE FROM tabelateste WHERE nome='nome';

Query OK, 1 row affected (0.16 sec)

Tutorial PHP - 101 -

Page 102: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Apêndice 4

Actualizar um campo de um registo

(supondo que existe um registo com id=3):

mysql> UPDATE tabelateste SET id=4 WHERE id=3;

Query OK, 1 row affected (0.06 sec)

Rows matched: 1 Changed: 1 Warnings: 0

Tutorial PHP - 102 -

Page 103: TUTORIAL DE PHP - ipp.ptpaf/proj/Set2001/Tutorial_PHP.pdf · Introdução ao PHP Estima-se que em 1996, a linguagem PHP/FI era já utilizada por cerca de 15.000 sites em todo o mundo,

Bibliografia

2200 BBIIBBLLIIOOGGRRAAFFIIAA

• PHP Home Page http://www.php.net/

• phpTidBits http://www.htmlwizard.net/phpTidbits/

• PHPBuilder.Com http://www.phpbuilder.com/

• PHP3 resources at DevShed http://www.devshed.com/Server_Side/PHP/

• PHP.CodeBase.Org http://php.codebase.org/

• PX - PHP Code Exchange http://px.sklar.com/

• Berber's PHP3 Example Page http://webdev.berber.co.il/

• PHP Base Library http://phplib.shonline.de/

Tutorial PHP - 103 -