Escolar Documentos
Profissional Documentos
Cultura Documentos
Projeto Supervisionado
Tutorial da linguagem PHP
por Maurcio Vivas de Souza Barreto
vivas@usa.net
mauricio@vivas.com.br
Professor Orientador:
Giovanny Lucero
ii
________________________________________
Professor Giovanny Lucero
________________________________________
Professora Ana Rosimere
________________________________________
Professor Leonardo Nogueira Matos
iii
Agradecimentos
A Ana Rosimere, pela ajuda que sempre deu durante todo o curso;
iv
ndice
NDICE.............................................................................................................................V
1. INTRODUO...........................................................................................................11
O QUE PHP?.......................................................................................11
O QUE PODE SER FEITO COM PHP?.......................................................11
COMO SURGIU A LINGUAGEM PHP?......................................................12
2. SINTAXE BSICA....................................................................................................13
PRIMEIRO EXEMPLO..............................................................................16
UTILIZANDO FORMULRIOS HTML......................................................17
INTERAGINDO COM O BROWSER............................................................18
ACESSANDO BANCOS DE DADOS..........................................................19
Conexo com o servidor...................................................................19
Seleo do banco de dados...............................................................20
Execuo de queries SQL.................................................................20
Tratamento de resultados de query SELECT...................................22
4. TIPOS..........................................................................................................................24
TIPOS SUPORTADOS...............................................................................24
Inteiros (integer ou long)..................................................................24
Nmeros em Ponto Flutuante (double ou float)...............................25
Strings...............................................................................................25
Significado................................................................................................................26
Arrays...............................................................................................26
Listas..............................................................................................................................27
Objetos..............................................................................................28
Booleanos.........................................................................................28
TRANSFORMAO DE TIPOS..................................................................28
Coeres...........................................................................................28
Transformao explcita de tipos.....................................................29
Com a funo settype........................................................................30
5. CONSTANTES...........................................................................................................31
CONSTANTES PR-DEFINIDAS................................................................31
DEFININDO CONSTANTES.......................................................................31
6. OPERADORES...........................................................................................................32
ARITMTICOS.........................................................................................32
DE STRINGS............................................................................................32
DE ATRIBUIO......................................................................................32
BIT A BIT................................................................................................33
LGICOS................................................................................................33
COMPARAO.......................................................................................33
EXPRESSO CONDICIONAL.....................................................................34
DE INCREMENTO E DECREMENTO...........................................................34
ORDEM DE PRECEDNCIA DOS OPERADORES.........................................35
7. ESTRUTURAS DE CONTROLE.............................................................................36
BLOCOS.................................................................................................36
COMANDOS DE SELEO.......................................................................36
if........................................................................................................37
switch................................................................................................39
COMANDOS DE REPETIO....................................................................41
while.................................................................................................41
do... while.........................................................................................41
for.....................................................................................................42
QUEBRA DE FLUXO................................................................................43
Break.................................................................................................43
Continue...........................................................................................43
8. FUNES...................................................................................................................45
DEFININDO FUNES.............................................................................45
VALOR DE RETORNO..............................................................................45
ARGUMENTOS........................................................................................46
Passagem de parmetros por referncia..........................................46
Argumentos com valores pr-definidos (default).............................47
CONTEXTO.............................................................................................48
ESCOPO..................................................................................................48
9. VARIVEIS................................................................................................................50
O MODIFICADOR STATIC........................................................................50
VARIVEIS VARIVEIS..........................................................................51
VARIVEIS ENVIADAS PELO NAVEGADOR.............................................51
URLencode.......................................................................................52
VARIVEIS DE AMBIENTE......................................................................52
VERIFICANDO O TIPO DE UMA VARIVEL..............................................52
Funo que retorna o tipo da varivel.............................................53
Funes que testam o tipo da varivel.............................................53
DESTRUINDO UMA VARIVEL................................................................53
VERIFICANDO SE UMA VARIVEL POSSUI UM VALOR............................54
A funo isset....................................................................................54
A funo empty.................................................................................54
10. CLASSES E OBJETOS...........................................................................................55
CLASSE..................................................................................................55
OBJETO..................................................................................................55
A VARIVEL $THIS................................................................................55
SUBCLASSES..........................................................................................56
CONSTRUTORES.....................................................................................56
12. CONCLUSES.........................................................................................................58
vi
FUNES GENRICAS............................................................................69
Array.................................................................................................69
range.................................................................................................69
shuffle...............................................................................................70
sizeof.................................................................................................70
FUNES DE NAVEGAO.................................................................70
reset..................................................................................................70
end....................................................................................................70
next...................................................................................................71
prev...................................................................................................71
vii
pos.....................................................................................................71
key.....................................................................................................71
each...................................................................................................71
FUNES DE ORDENAO.....................................................................72
sort....................................................................................................72
rsort..................................................................................................72
asort..................................................................................................73
arsort................................................................................................73
ksort..................................................................................................73
usort..................................................................................................73
uasort................................................................................................73
uksort................................................................................................74
viii
Resumo
O presente trabalho tem por objetivo relatar as atividades desenvolvidas
durante a realizao do projeto supervisionado do aluno Maurcio Vivas de Souza
Barreto, orientado pelo professor Giovanny Lucero.
O projeto consistiu numa pesquisa sobre a linguagem PHP uma
linguagem de script voltada para a construo de home-pages dinmicas, que
executada no servidor http. Para a complementao do estudo sobre a linguagem foi
desenvolvida uma aplicao, como exemplo da utilizao da linguagem PHP.
A aplicao desenvolvida trata-se do preenchimento do formulrio para a
GED Gratificao de Estmulo Docncia. Atravs do sistema desenvolvido,
qualquer usurio cadastrado poder preencher os formulrios do GED atravs de um
navegador http, e ao final do perodo poder imprimir o formulrio preenchido.
ix
1. Introduo
O que PHP?
Basicamente, qualquer coisa que pode ser feita por algum programa CGI
pode ser feita tambm com PHP, como coletar dados de um formulrio, gerar pginas
dinamicamente ou enviar e receber cookies.
PHP tambm tem como uma das caractersticas mais importantes o
suporte a um grande nmero de bancos de dados, como dBase, Interbase, mSQL,
mySQL, Oracle, Sybase, PostgreSQL e vrios outros. Construir uma pgina baseada em
um banco de dados torna-se uma tarefa extremamente simples com PHP.
Alm disso, PHP tem suporte a outros servios atravs de protocolos
como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda possvel abrir
sockets e interagir com outros protocolos.
11
12
2. Sintaxe Bsica
Separador de instrues
13
Nomes de variveis
Toda varivel em PHP tem seu nome composto pelo caracter $ e uma
string, que deve iniciar por uma letra ou o caracter _. PHP case sensitive, ou seja,
as variveis $vivas e $VIVAS so diferentes. Por isso preciso ter muito cuidado ao
definir os nomes das variveis. bom evitar os nomes em maisculas, pois como
veremos mais adiante, o PHP j possui alguma variveis pr-definidas cujos nomes so
formados por letras maisculas.
Comentrios
14
Exemplos:
<?
15
Neste exemplo, criaremos um script com uma sada simples, que servir
para testar se a instalao foi feita corretamente:
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
echo "Primeiro Script";
?>
</body>
</html>
16
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
$texto = "Primeiro Script";
echo $texto;
?>
</body>
</html>
17
figura 01
figura 02
PHP
tambm
permite
interagir
com
informaes
do
browser
figura 04
(strpos($HTTP_USER_AGENT,"MSIE 5") != 0) {
echo "Voc usa Internet Explorer";
18
} else {
echo "Voc no usa Internet Explorer";
}
?>
</body>
</html>
19
identificador da conexo estabelecida e dever ser armazenado numa varivel para ser
utilizado depois. No nosso exemplo, temos como servidor de banco de dados a mesma
mquina que roda o servidor http, como login o usurio root e senha phppwd:
$conexao = mysql_connect(localhost, root, phppwd);
20
Agora vejamos como ficou o cdigo completo para executar uma query
SQL numa base de dados mySQL, com um exemplo que cria uma tabela chamada
exemplo e adiciona alguns dados:
$conexao = mysql_connect(localhost, root, phppwd);
mysql_select_db(ged, $conexao);
$cria = CREATE TABLE exemplo (codigo INT AUTO_INCREMENT
PRIMARY KEY, nome CHAR(40), email CHAR(50));
$insere1 = INSERT INTO exemplo
(Mauricio Vivas,vivas@usa.net);
(nome,email)
VALUES
(nome,email)
VALUES
VALUES
VALUES
mysql_query($cria, $conexao);
mysql_query($insere1, $conexao);
mysql_query($insere2, $conexao);
mysql_query($insere3, $conexao);
mysql_query($insere4, $conexao);
21
Ao
executar
uma
query
SQL
SELECT
atravs
do
comando
pode ser tratada de diversas formas. Duas maneiras interessantes de faz-lo usam o
comando mysql_result e o comando mysql_fetch_row, respectivamente.
O comando mysql_result tem a seguinte sintaxe:
int
[campo]);
mysql_result(int
resultado,
int
linha,
mixed
22
23
4. Tipos
Tipos Suportados
24
Strings
25
Significado
\n
\r
\t
\\
\$
\
\
Nova linha
Retorno de carro (semelhante a \n)
Tabulao horizontal
A prpria barra ( \ )
O smbolo $
Aspa simples
Aspa dupla
Arrays
26
Listas
As listas so utilizadas em PHP para realizar atribuies mltiplas.
Atravs de listas possvel atribuir valores que esto num array para variveis. Vejamos
o exemplo:
Exemplo:
list($a, $b, $c) = array(a, b, c);
==
==
==
==
null
um
dois
tres
Objetos
Um objeto pode ser inicializado utilizando o comando new para instanciar
uma classe para uma varivel.
Exemplo:
class teste {
function nada() {
echo nada;
}
}
$vivas = new teste;
$vivas -> nada();
Booleanos
Transformao de tipos
28
convertido para float, seno, se um deles for integer, o outro ser convertido para
integer.
Exemplo:
$vivas =
$vivas =
$vivas =
$vivas =
1;
// $vivas a string 1
$vivas + 1; // $vivas o integer 2
$vivas + 3.7;// $vivas o double 5.7
1 + 1.5
// $vivas o double 2.5
nmeros o seguinte:
-
Exemplos:
$vivas = 1
$vivas = 1
$vivas = 1
$vivas = 1
$vivas = 1
$vivas = 1
+
+
+
+
+
+
10.5;
//
-1.3e3;
//
teste10.5; //
10testes; //
" 10testes";
"+ 10testes";
$vivas == 11.5
$vivas == -1299
$vivas == 1
$vivas == 11
// $vivas == 11
// $vivas == 1
29
//
//
//
//
(array)
(object)
// $vivas integer
// $vivas double
30
5. Constantes
Constantes pr-definidas
Definindo constantes
31
6. Operadores
Aritmticos
adio
subtrao
multiplicao
diviso
mdulo
de strings
concatenao
de atribuio
32
=
+=
-=
*=
/=
%=
.=
atribuio simples
atribuio com adio
atribuio com subtrao
atribuio com multiplicao
atribuio com diviso
atribuio com mdulo
atribuio com concatenao
Exemplo:
$a = 7;
$a += 2; // $a passa a conter o valor 9
bit a bit
e lgico
ou lgico
ou exclusivo
no (inverso)
shift left
shift right
Lgicos
Utilizados para inteiros representando valores booleanos
and
or
xor
!
&&
||
e lgico
ou lgico
ou exclusivo
no (inverso)
e lgico
ou lgico
Comparao
33
igual a
diferente de
menor que
maior que
menor ou igual a
maior ou igual a
Expresso condicional
de incremento e decremento
++
--
incremento
decremento
34
Associatividade
esquerda
,
Operadores
2.
esquerda
or
3.
esquerda
xor
4.
esquerda
and
5.
direita
6.
esquerda
7.
esquerda
?:
8.
esquerda
||
9.
esquerda
&&
10.
esquerda
11.
esquerda
12.
esquerda
&
13.
no associa
== !=
14.
no associa
15.
esquerda
<< >>
16.
esquerda
+-.
17.
esquerda
*/%
18.
direita
19.
direita
20.
no associa
35
7. Estruturas de Controle
As estruturas que veremos a seguir so comuns para as linguagens de
programao imperativas, bastando, portanto, descrever a sintaxe de cada uma delas,
resumindo o funcionamento.
Blocos
Um bloco consiste de vrios comandos agrupados com o objetivo de
relacion-los com determinado comando ou funo. Em comandos como if, for,
while, switch e em declaraes de funes blocos podem ser utilizados para permitir
Comandos de seleo
36
if
37
38
if (expressao1) :
comando;
. . .
comando;
[ elseif (expressao2)
comando;
. . .
comando; ]
[ else
comando;
. . .
comando; ]
endif;
switch
if ($i == 0)
print i
elseif ($i ==
print i
elseif ($i ==
print i
igual a zero;
1)
igual a um;
2)
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;
}
momento que encontra um valor igual ao da varivel testada, passa a executar todos os
comandos seguintes, mesmo os que fazem parte de outro teste, at o fim do bloco. por
isso usa-se o comando break, quebrando o fluxo e fazendo com que o cdigo seja
executado da maneira desejada. Veremos mais sobre o break mais adiante. Veja o
exemplo:
switch ($i) {
case 0:
print i igual a zero;
case 1:
print i igual a um;
case 2:
print i igual a dois;
switch ($s) {
case casa:
print A casa amarela;
case arvore:
print a rvore bonita;
case lampada:
print joao apagou a lampada;
40
comandos de repetio
while
O while o comando de repetio (lao) mais simples. Ele testa uma
condio e executa um comando, ou um bloco de comandos, at que a condio testada
seja falsa. Assim como o if, o while tambm possui duas sintaxes alternativas:
while (<expressao>)
<comando>;
while (<expressao>):
<comando>;
. . .
<comando>;
endwhile;
do... while
41
$i = 0;
do {
print ++$i;
} while ($i < 10);
for
42
<inicializacao>
while (<condicao>) {
comandos
...
<incremento>
}
Quebra de fluxo
Break
O comando break pode ser utilizado em laos de do, for e while,
alm do uso j visto no comando switch. Ao encontrar um break dentro de um
desses laos, o interpretador PHP para imediatamente a execuo do lao, seguindo
normalmente o fluxo do script.
while ($x > 0) {
...
if ($x == 20) {
echo erro! x = 20;
break;
...
}
No trecho de cdigo acima, o lao while tem uma condio para seu
trmino normal ($x <= 0), mas foi utilizado o break para o caso de um trmino no
previsto no incio do lao. Assim o interpretador seguir para o comando seguinte ao
lao.
Continue
43
44
8. Funes
Definindo funes
Valor de retorno
45
Argumentos
46
/*
Aqui
as
duas
variveis
tero
seus
47
Contexto
O contexto o conjunto de variveis e seus respectivos valores num
determinado ponto do programa. Na chamada de uma funo, ao iniciar a execuo do
bloco que contm a implementao da mesma criado um novo contexto, contendo as
variveis declaradas dentro do bloco, ou seja, todas as variveis utilizadas dentro
daquele bloco sero eliminadas ao trmino da execuo da funo.
Escopo
O escopo de uma varivel em PHP define a poro do programa onde ela
pode ser utilizada. Na maioria dos casos todas as variveis tm escopo global.
Entretanto, em funes definidas pelo usurio um escopo local criado. Uma varivel
de escopo global no pode ser utilizada no interior de uma funo sem que haja uma
declarao.
Exemplo:
$vivas = Testando;
function Teste() {
echo $vivas;
}
Teste();
48
Exemplo:
$vivas = Testando;
function Teste() {
global $vivas;
echo $vivas;
}
Teste();
49
9. Variveis
O modificador static
Uma varivel esttica visvel num escopo local, mas ela inicializada
apenas uma vez e seu valor no perdido quando a execuo do script deixa esse
escopo. Veja o seguinte exemplo:
function Teste() {
$a = 0;
echo $a;
$a++;
}
50
Variveis Variveis
Para interagir com a navegao feita pelo usurio, necessrio que o PHP
possa enviar e receber informaes para o software de navegao. A maneira de enviar
informaes, como j foi visto anteriormente, geralmente atravs de um comando de
impresso, como o echo. Para receber informaes vindas do navegador atravs de um
link ou um formulrio html o PHP utiliza as informaes enviadas atravs da URL. Por
exemplo: se seu script php est localizado em http://localhost/teste.php3 e
voc o chama com a url http://localhost/teste.php3?vivas=teste,
automaticamente o PHP criar uma varivel com o nome $vivas contendo a string
teste. Note que o contedo da varivel est no formato urlencode. Os formulrios
html j enviam informaes automaticamente nesse formato, e o PHP decodifica sem
necessitar de tratamento pelo programador.
51
URLencode
Variveis de ambiente
52
A palavra mixed indica que a varivel var pode ser de diversos tipos.
A funo gettype pode retornar as seguintes strings: integer,
double, string, array, object e unknown type.
So as funes is_int,
is_integer,
is_real,
is_long,
varivel, ser criada uma nova varivel de mesmo nome e de contedo vazio, a no ser
que a chamada seja pela funo isset. Se a operao for bem sucedida, retorna true.
Existem dois tipos de teste que podem ser feitos para verificar se uma
varivel est setada: com a funo isset e com a funo empty.
A funo isset
E retorna true se a varivel estiver setada (ainda que com uma string
vazia ou o valor zero), e false em caso contrrio.
A funo empty
54
Classe
Uma classe um conjunto de variveis e funes relacionadas a essas
variveis. Uma vantagem da utilizao poder usufruir do recurso de encapsulamento
de informao. Com o encapsulamento o usurio de uma classe no precisa saber como
ela implementada, bastando para a utilizao conhecer a interface, ou seja, as funes
disponveis. Uma classe um tipo, e portanto no pode ser atribuda a uma varivel.
Para definir uma classe, deve-se utilizar a seguinte sintaxe:
class Nome_da_classe {
var $variavel1;
var $variavel2;
function funcao1 ($parametro) {
/* === corpo da funo === */
}
}
Objeto
Como foi dito anteriormente, classes so tipos, e no podem ser atribudas
a variveis. Variveis do tipo de uma classe so chamadas de objetos, e devem ser
criadas utilizando o operador new, seguindo o exemplo abaixo:
$variavel = new $nome_da_classe;
Para
utilizar
as
A varivel $this
Na definio de uma classe, pode-se utilizar a varivel $this, que o
prprio objeto. Assim, quando uma classe instanciada em um objeto, e uma funo
desse objeto na definio da classe utiliza a varivel $this, essa varivel significa o
objeto que estamos utilizando.
55
$minhaconta->credito(50);
$minhaconta->saldo(); // retorna 50
SubClasses
Uma classe pode ser uma extenso de outra. Isso significa que ela herdar
todas as variveis e funes da outra classe, e ainda ter as que forem adicionadas pelo
programador. Em PHP no permitido utilizar herana mltipla, ou seja, uma classe
pode ser extenso de apenas uma outra.Para criar uma classe extendida, ou derivada de
outra, deve ser utilizada a palavra reservada extends, como pode ser visto no exemplo
seguinte:
class novaconta extends conta {
var $numero;
function numero() {
return $this->numero;
}
}
56
class conta {
var $saldo;
function conta () {
$this.saldo = 0;
}
function saldo() {
return $this->saldo;
}
function credito($valor) {
$this->saldo += $valor;
}
}
57
12. Concluses
58
59
htmlentities
string htmlentities(string str);
para 'º'
para 'ª'
para 'á'
para ç'
nl2br
string nl2br(string str);
60
Maurcio<br>Vivas<br>
get_meta_tags
array get_meta_tags(string arquivo);
strip_tags
string strip_tags(string str);
urlencode
string urlencode(string str);
61
urldecode
string urldecode(string str);
Implode e join
string implode(string separador, array partes);
string join(string separador, array partes);
split
array split(string padrao, string str, int [limite]);
62
explode
array explode(string padrao, string str);
str1,
string
str2,
double
strcasecmp
int strcasecmp(string str1, string str2);
63
strcmp
int strcasecmp(string str1, string str2);
strstr
string strstr(string str1, string str2);
string strchr(string str1, string str2);
stristr
string strstr(string str1, string str2);
strpos
int strpos(string str1, string str2, int [offset] );
strrpos
int strrpos(string haystack, char needle);
64
chop
string chop(string str);
\n
\n
); // retorna
Teste
ltrim
string ltrim(string str);
Teste
\n
\n ); // retorna Teste
\n
\n
trim
string trim(string str);
\n
\n ); // retorna Teste
strrev
string strrev(string str);
65
strtolower
string strtolower(string str);
strtoupper
string strtoupper(string str);
ucfirst
string ucfirst(string str);
ucwords
string ucwords(string str);
66
Exemplo:
ucwords(teste de funcao); // retorna Teste De Funcao
str_replace
str3);
string
str_replace(string
str1,
string
str2,
string
Funes diversas
chr
string chr(int ascii);
ord
int ord(string string);
echo
echo(string arg1, string [argn]... );
print
print(string arg);
strlen
int strlen(string str);
68
Funes Genricas
Array
array array(...);
array("um",
range
array range(int minimo, int maximo);
69
shuffle
void shuffle(array &arr);
sizeof
int sizeof(array arr);
Funes de navegao
Toda varivel do tipo array possui um ponteiro interno indicando o
prximo elemento a ser acessado no caso de no ser especificado um ndice. As funes
seguintes servem para modificar esse ponteiro, permitindo assim percorrer um array
para verificar seu contedo (chaves e elementos).
reset
mixed reset(array arr);
next
mixed next(array arr);
prev
mixed prev(array arr);
pos
mixed pos(array arr);
key
mixed key(array arr);
71
Funes de ordenao
So funes que servem para arrumar os elementos de um array de acordo
com determinados critrios. Estes critrios so: manuteno ou no da associao entre
ndices e elementos; ordenao por elementos ou por ndices; funo de comparao
entre dois elementos.
sort
void sort(array &arr);
rsort
void rsort(array &arr);
72
asort
void asort(array &arr);
arsort
void arsort(array &arr);
ksort
void ksort(array &arr);
usort
void usort(array &arr, function compara);
Esta uma funo que utiliza outra funo como parmetro. Ordena os
elementos de um array sem manter os relacionamentos com os ndices, e utiliza para
efeito de comparao uma funo definida pelo usurio, que deve comparar dois
elementos do array e retornar 0, 1 ou 1, de acordo com qualquer critrio estabelecido
pelo usurio.
uasort
void uasort(array &arr, function compara);
73
uksort
void uksort(array &arr, function compara);
74