Projeto Supervisionado
Tutorial da linguagem PHP
por Maurcio Vivas de Souza Barreto
vivas@usa.net
mauricio@vivas.com.br
Professor Orientador:
Giovanny Lucero
________________________________________
Professor Giovanny Lucero
________________________________________
Professora Ana Rosimere
________________________________________
Professor Leonardo Nogueira Matos
ii
Agradecimentos
A Ana Rosimere, pela ajuda que sempre deu durante todo o curso;
iii
ndice
NDICE ......................................................................................................................... IV
1. INTRODUO ........................................................................................................... 1
Objetos ............................................................................................. 18
Booleanos......................................................................................... 18
TRANSFORMAO DE TIPOS .................................................................. 18
Coeres .......................................................................................... 18
Transformao explcita de tipos .................................................... 19
Com a funo settype ....................................................................... 20
5. CONSTANTES .......................................................................................................... 21
ARITMTICOS ........................................................................................ 22
DE STRINGS ........................................................................................... 22
DE ATRIBUIO ..................................................................................... 22
BIT A BIT ............................................................................................... 23
iv
LGICOS ............................................................................................... 23
COMPARAO....................................................................................... 24
EXPRESSO CONDICIONAL .................................................................... 24
DE INCREMENTO E DECREMENTO ........................................................... 24
ORDEM DE PRECEDNCIA DOS OPERADORES ......................................... 25
7. ESTRUTURAS DE CONTROLE ............................................................................ 26
BLOCOS ................................................................................................ 26
COMANDOS DE SELEO ....................................................................... 26
if ....................................................................................................... 27
switch ............................................................................................... 29
COMANDOS DE REPETIO .................................................................... 31
while ................................................................................................. 31
do... while ......................................................................................... 31
for ..................................................................................................... 32
QUEBRA DE FLUXO................................................................................ 33
Break ................................................................................................ 33
Continue ........................................................................................... 33
8. FUNES .................................................................................................................. 35
CLASSE ................................................................................................. 45
OBJETO ................................................................................................. 45
A VARIVEL $THIS ................................................................................ 45
SUBCLASSES ......................................................................................... 46
CONSTRUTORES .................................................................................... 46
12. CONCLUSES ....................................................................................................... 48
13. BIBLIOGRAFIA E REFERNCIAS .................................................................... 49
key .................................................................................................... 60
each .................................................................................................. 60
FUNES DE ORDENAO ..................................................................... 61
sort ................................................................................................... 61
rsort .................................................................................................. 61
asort ................................................................................................. 62
arsort ................................................................................................ 62
ksort ................................................................................................. 62
usort ................................................................................................. 62
uasort ............................................................................................... 62
uksort ............................................................................................... 63
vii
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.
viii
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.
2. Sintaxe Bsica
<?php
comandos
?>
<script language=php>
comandos
</script>
<?
comandos
?>
<%
comandos
%>
Separador de instrues
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
Exemplo:
<? echo teste; #isto um teste ?>
<? echo teste; //este teste similar ao anterior ?>
Exemplos:
<?
echo teste; /* Isto um comentrio com mais
de uma linha, mas no funciona corretamente ?>
*/
<?
echo teste; /* Isto um comentrio com mais
de uma linha que funciona corretamente
*/
?>
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>
<html>
<head><title>Aprendendo PHP</title></head>
<body>
Primeiro Script
</body>
</html>
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
$texto = "Primeiro Script";
echo $texto;
?>
</body>
</html>
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
if ($texto != "")
echo "Voc digitou \"$texto\"<br><br>";
?>
<form method=post action="<? echo $PATH_INFO; ?>">
<input type="text" name="texto" value="" size=10>
<br>
<input type="submit" name="sub" value="Enviar!">
</form>
</body>
</html>
figura 01
figura 02
PHP
tambm
permite
interagir
com
informaes
do
browser
figura 03
figura 04
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?
if (strpos($HTTP_USER_AGENT,"MSIE 5") != 0) {
echo "Voc usa Internet Explorer";
} else {
echo "Voc no usa Internet Explorer";
}
?>
</body>
</html>
mysql_select_db(ged, $conexao);
10
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
VALUES
11
mysql_query($insere2, $conexao);
mysql_query($insere3, $conexao);
mysql_query($insere4, $conexao);
Ao
executar
uma
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:
se use uma outra funo, como por exemplo mysql_fetch_row, que possui a seguinte
sintaxe:
13
4. Tipos
Tipos Suportados
$vivas = 1234; #
$vivas = -234; #
$vivas = 0234; #
#
$vivas = 0x34; #
#
14
$vivas = 1.234;
$vivas = 23e4; # equivale a 230.000
Strings
a) utilizando aspas simples ( ' ) Desta maneira, o valor da varivel ser exatamente o
texto contido entre as aspas (com exceo de \\ e \' ver tabela abaixo)
b) utilizando aspas duplas ( " ) Desta maneira, qualquer varivel ou caracter de
escape ser expandido antes de ser atribudo.
Exemplo:
<?
$teste = "Mauricio";
$vivas = '---$teste--\n';
echo "$vivas";
?>
15
Sintaxe
Significado
\n
Nova linha
\r
\t
Tabulao horizontal
\\
A prpria barra ( \ )
\$
O smbolo $
Aspa simples
Aspa dupla
Arrays
16
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
17
No apndice 02 est disponvel uma lista das funes mais comuns para o
tratamento de arrays.
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
18
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
19
Exemplo:
$vivas =
$vivas =
$vivas =
$vivas =
15;
(double) $vivas
3.9
(int) $vivas
//
//
//
//
//
(array)
(object)
Exemplo:
$vivas = 15;
settype($vivas,double)
// $vivas integer
// $vivas double
20
5. Constantes
Constantes pr-definidas
Definindo constantes
21
6. Operadores
Aritmticos
adio
subtrao
multiplicao
diviso
mdulo
de strings
concatenao
de atribuio
22
atribuio simples
+=
-=
*=
/=
%=
.=
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
e lgico
or
ou lgico
xor
ou exclusivo
no (inverso)
&&
e lgico
||
ou lgico
23
Comparao
==
igual a
!=
diferente de
<
menor que
>
maior que
<=
menor ou igual a
>=
maior ou igual a
Expresso condicional
(expressao1)?(expressao2):( expressao3)
de incremento e decremento
++
incremento
--
decremento
24
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
Operadores
Associatividade
1.
esquerda
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
25
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
que um comando faa parte do contexto desejado. Blocos em PHP so delimitados pelos
caracteres { e }. A utilizao dos delimitadores de bloco em uma parte qualquer do
cdigo no relacionada com os comandos citados ou funes no produzir efeito
algum, e ser tratada normalmente pelo interpretador.
Exemplo:
if ($x == $y)
comando1;
comando2;
Comandos de seleo
26
if
if (expresso)
comando;
if (expresso):
comando;
. . .
comando;
endif;
if (expresso)
comando;
else
comando;
if (expresso):
comando;
. . .
comando;
else
comando;
. . .
comando;
endif;
27
if (expressao1)
comando1;
else
if (expressao2)
comando2;
else
if (expressao3)
comando3;
else
comando4;
O comando elseif tambm pode ser utilizado com dois tipos de sintaxe.
Em resumo, a sintaxe geral do comando if fica das seguintes maneiras:
if (expressao1)
comando;
[ elseif (expressao2)
comando; ]
[ else
comando; ]
28
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;
30
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
do {
<comando>
. . .
<comando>
} while (<expressao>);
31
$i = 0;
do {
print ++$i;
} while ($i < 10);
for
for (<inicializacao>;<condicao>;<incremento>) :
<comando>;
. . .
<comando>;
endfor;
32
<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
33
34
8. Funes
Definindo funes
Valor de retorno
35
Argumentos
Exemplo:
function imprime($texto){
echo $texto;
}
imprime(teste de funes);
Exemplo:
function mais5($numero) {
$numero += 5;
}
$a = 3;
mais5($a); //$a continua valendo 3
37
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();
38
Exemplo:
$vivas = Testando;
function Teste() {
global $vivas;
echo $vivas;
}
Teste();
39
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++;
}
function Teste() {
static $a = 0;
echo $a;
$a++;
}
40
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
http://localhost/teste.php3
script
e
php
voc
est
o
chama
localizado
com
em
a
url
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.
41
URLencode
O PHP possui duas funes para tratar com texto em urlencode. Seguem
suas sintaxes:
string urlencode(string texto);
string urldecode(string texto);
Variveis de ambiente
42
ajuda de algumas funes que ajudam a verificar isso. A verificao pode ser feita de
duas maneiras:
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,
43
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
44
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.
45
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;
}
}
class conta {
var $saldo;
function conta () {
$this.saldo = 0;
}
function saldo() {
return $this->saldo;
}
function credito($valor) {
$this->saldo += $valor;
}
}
47
12. Concluses
48
49
htmlentities
string htmlentities(string str);
para 'º'
para 'ª'
para 'á'
para ç'
nl2br
string nl2br(string str);
50
get_meta_tags
array get_meta_tags(string arquivo);
strip_tags
string strip_tags(string str);
urlencode
string urlencode(string str);
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]);
52
explode
array explode(string padrao, string str);
strcasecmp
int strcasecmp(string str1, string str2);
strcmp
int strcasecmp(string str1, string str2);
53
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);
54
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);
55
strtolower
string strtolower(string str);
strtoupper
string strtoupper(string str);
ucfirst
string ucfirst(string str);
ucwords
string ucwords(string str);
56
str_replace
string str_replace(string str1, string str2, string str3);
Funes diversas
chr
string chr(int ascii);
ord
int ord(string string);
echo
echo(string arg1, string [argn]... );
print
print(string arg);
57
Funes Genricas
Array
array array(...);
range
array range(int minimo, int maximo);
58
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);
59
next
mixed next(array arr);
prev
mixed prev(array arr);
pos
mixed pos(array arr);
key
mixed key(array arr);
60
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);
61
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);
62
uksort
void uksort(array &arr, function compara);
63