Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice
NDICE ............................................................................................................................ 1
1. INTRODUO ...........................................................................................................4
O QUE PHP? ............................................................................................................... 4
O QUE PODE SER FEITO COM PHP? ................................................................................ 4
COMO SURGIU A LINGUAGEM PHP? .............................................................................. 4
2. SINTAXE BSICA .....................................................................................................6
DELIMITANDO O CDIGO PHP ....................................................................................... 6
SEPARADOR DE INSTRUES ......................................................................................... 6
NOMES DE VARIVEIS ...................................................................................................6
COMENTRIOS............................................................................................................... 7
Comentrios de uma linha:...................................................................................... 7
Comentrios de mais de uma linha: ........................................................................7
3. CRIANDO OS PRIMEIROS SCRIPTS....................................................................9
PRIMEIRO EXEMPLO ......................................................................................................9
UTILIZANDO FORMULRIOS HTML ............................................................................10
INTERAGINDO COM O BROWSER................................................................................... 11
ACESSANDO BANCOS DE DADOS ................................................................................. 13
Conexo com o servidor ........................................................................................ 13
Seleo do banco de dados .................................................................................... 13
Execuo de queries SQL ...................................................................................... 14
Tratamento de resultados de query SELECT......................................................... 15
4. TIPOS......................................................................................................................... 17
TIPOS SUPORTADOS .....................................................................................................17
Inteiros (integer ou long) ....................................................................................... 17
Nmeros em Ponto Flutuante (double ou float)..................................................... 17
Strings .................................................................................................................... 18
Arrays .................................................................................................................... 19
Listas .............................................................................................................................. 19
Objetos................................................................................................................... 20
Booleanos .............................................................................................................. 21
TRANSFORMAO DE TIPOS......................................................................................... 21
Coeres ................................................................................................................ 21
Transformao explcita de tipos...........................................................................22
Com a funo settype ............................................................................................. 22
5. CONSTANTES ..........................................................................................................23
CONSTANTES PR-DEFINIDAS ...................................................................................... 23
DEFININDO CONSTANTES ............................................................................................. 23
6. OPERADORES .........................................................................................................24
ARITMTICOS .............................................................................................................. 24
DE STRINGS .................................................................................................................. 24
DE ATRIBUIO ...........................................................................................................24
BIT A BIT ...................................................................................................................... 25
LGICOS ...................................................................................................................... 25
COMPARAO .............................................................................................................25
EXPRESSO CONDICIONAL........................................................................................... 26
DE INCREMENTO E DECREMENTO ................................................................................. 26
ORDEM DE PRECEDNCIA DOS OPERADORES................................................................ 26
7. ESTRUTURAS DE CONTROLE ............................................................................28
BLOCOS ....................................................................................................................... 28
COMANDOS DE SELEO ............................................................................................. 28
if ............................................................................................................................. 29
switch ..................................................................................................................... 31
COMANDOS DE REPETIO ........................................................................................... 32
while....................................................................................................................... 32
do... while............................................................................................................... 33
for........................................................................................................................... 33
QUEBRA DE FLUXO ......................................................................................................35
Break...................................................................................................................... 35
Continue................................................................................................................. 35
8. FUNES.................................................................................................................. 36
DEFININDO FUNES ...................................................................................................36
VALOR DE RETORNO ....................................................................................................36
ARGUMENTOS .............................................................................................................36
Passagem de parmetros por referncia ............................................................... 37
Argumentos com valores pr-definidos (default) ................................................... 38
CONTEXTO .................................................................................................................. 38
ESCOPO ....................................................................................................................... 39
9. VARIVEIS............................................................................................................... 41
O MODIFICADOR STATIC .............................................................................................. 41
VARIVEIS VARIVEIS ................................................................................................ 42
VARIVEIS ENVIADAS PELO NAVEGADOR ....................................................................42
URLencode ............................................................................................................42
VARIVEIS DE AMBIENTE ............................................................................................ 43
VERIFICANDO O TIPO DE UMA VARIVEL .....................................................................43
Funo que retorna o tipo da varivel ..................................................................43
Funes que testam o tipo da varivel...................................................................43
DESTRUINDO UMA VARIVEL ...................................................................................... 44
VERIFICANDO SE UMA VARIVEL POSSUI UM VALOR ................................................... 44
A funo isset .........................................................................................................44
A funo empty.......................................................................................................44
10. CLASSES E OBJETOS .......................................................................................... 46
CLASSE ........................................................................................................................ 46
OBJETO ........................................................................................................................ 46
A VARIVEL $THIS ......................................................................................................46
SUBCLASSES ............................................................................................................... 47
CONSTRUTORES ...........................................................................................................47
12. CONCLUSES .......................................................................................................49
13. BIBLIOGRAFIA E REFERNCIAS ....................................................................50
APNDICE 01 - FUNES PARA TRATAMENTO DE STRINGS ...................... 51
FUNES RELACIONADAS A HTML.............................................................................51
htmlspecialchars ....................................................................................................51
htmlentities.............................................................................................................51
nl2br....................................................................................................................... 51
get_meta_tags ........................................................................................................51
strip_tags ............................................................................................................... 52
urlencode ............................................................................................................... 52
urldecode ............................................................................................................... 52
FUNES RELACIONADAS A ARRAYS ...........................................................................53
Implode e join ........................................................................................................53
split ........................................................................................................................ 53
explode................................................................................................................... 53
COMPARAES ENTRE STRINGS ................................................................................... 53
similar_text ............................................................................................................53
strcasecmp .............................................................................................................54
strcmp .................................................................................................................... 54
strstr....................................................................................................................... 54
stristr...................................................................................................................... 54
strpos ..................................................................................................................... 55
strrpos .................................................................................................................... 55
FUNES PARA EDIO DE STRINGS ............................................................................55
chop ....................................................................................................................... 55
ltrim ....................................................................................................................... 55
trim......................................................................................................................... 55
strrev ...................................................................................................................... 56
strtolower............................................................................................................... 56
strtoupper............................................................................................................... 56
ucfirst ..................................................................................................................... 56
ucwords.................................................................................................................. 57
str_replace .............................................................................................................57
FUNES DIVERSAS .....................................................................................................57
chr.......................................................................................................................... 57
ord.......................................................................................................................... 57
echo........................................................................................................................ 57
print ....................................................................................................................... 57
strlen ...................................................................................................................... 58
APNDICE 02 - FUNES PARA TRATAMENTO DE ARRAYS ....................... 59
FUNES GENRICAS ..................................................................................................59
Array ...................................................................................................................... 59
range ...................................................................................................................... 59
shuffle..................................................................................................................... 60
sizeof ...................................................................................................................... 60
FUNES DE NAVEGAO........................................................................................ 60
reset ....................................................................................................................... 60
end ......................................................................................................................... 60
next......................................................................................................................... 60
prev ........................................................................................................................ 61
pos.......................................................................................................................... 61
key.......................................................................................................................... 61
each........................................................................................................................ 61
FUNES DE ORDENAO ........................................................................................... 62
sort ......................................................................................................................... 62
rsort ....................................................................................................................... 62
asort ....................................................................................................................... 62
arsort ..................................................................................................................... 62
ksort ....................................................................................................................... 62
usort ....................................................................................................................... 62
uasort ..................................................................................................................... 63
uksort ..................................................................................................................... 63
1. Introduo
O que PHP?
PHP uma linguagem que permite criar sites WEB dinmicos, possibilitando uma
interao com o usurio atravs de formulrios, parmetros da URL e links. A diferena de PHP com
relao a linguagens semelhantes a Javascript que o cdigo PHP executado no servidor, sendo enviado
para o cliente apenas html puro. Desta maneira possvel interagir com bancos de dados e aplicaes
existentes no servidor, com a vantagem de no expor o cdigo fonte para o cliente. Isso pode ser til
quando o programa est lidando com senhas ou qualquer tipo de informao confidencial.
O que diferencia PHP de um script CGI escrito em C ou Perl que o cdigo PHP fica
embutido no prprio HTML, enquanto no outro caso necessrio que o script CGI gere todo o cdigo
HTML, ou leia de um outro arquivo.
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.
A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf. As
primeiras verses no foram disponibilizadas, tendo sido utilizadas em sua home-page apenas para que
ele pudesse ter informaes sobre as visitas que estavam sendo feitas. A primeira verso utilizada por
outras pessoas foi disponibilizada em 1995, e ficou conhecida como Personal Home Page Tools
(ferramentas para pgina pessoal). Era composta por um sistema bastante simples que interpretava
algumas macros e alguns utilitrios que rodavam por trs das home-pages: um livro de visitas, um
contador e algumas outras coisas.
2. Sintaxe Bsica
<?php
comandos
?>
<script language=php>
comandos
</script>
<?
comandos
?>
<%
comandos
%>
O tipo de tags mais utilizado o terceiro, que consiste em uma abreviao do
primeiro. Para utiliz-lo, necessrio habilitar a opo short-tags na configurao do PHP. O ltimo tipo
serve para facilitar o uso por programadores acostumados sintaxe de ASP. Para utiliz-lo tambm
necessrio habilit-lo no PHP, atravs do arquivo de configurao php.ini.
Separador de instrues
Entre cada instruo em PHP preciso utilizar o ponto-e-vrgula, assim como em C, Perl
e outras linguagens mais conhecidas. Na ltima instruo do bloco de script no necessrio o uso do
ponto-e-vrgula, mas por questes estticas recomenda-se o uso sempre.
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>
Server
escolhido).
Abra
uma
janela
do
navegador
digite
endereo
<html>
<head><title>Aprendendo PHP</title></head>
<body>
Primeiro Script
</body>
</html>
Isso mostra como o PHP funciona. O script executado no servidor, ficando disponvel
para o usurio apenas o resultado. Agora vamos escrever um script que produza exatamente o mesmo
resultado utilizando uma varivel:
<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>
10
figura 01
figura 02
Isso ocorre porque o cdigo PHP testa o contedo da varivel $texto. Inicialmente ele
uma string vazia, e por isso nada impresso na primeira parte. Quando algum texto digitado no
formulrio e submetido, o PHP passa a trat-lo como uma varivel. Como no formulrio o campo possui
o nome texto, a varivel com seu contedo ser $texto. Assim, no prximo teste o valor da varivel ser
diferente de uma string vazia, e o PHP imprime um texto antes do formulrio.
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<? echo $HTTP_USER_AGENT; ?>
</body>
</html>
11
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>
Neste exemplo, ser apenas exibido um texto informando se est sendo utilizado o
Microsoft Internet Explorer ou no, mas para outras funes poderia ser utilizado algo semelhante.
bom
notar
surgimento
de
mais
uma
funo
no
cdigo
anterior:
$HTTP_USER_AGENT contm a string MSIE, basta testar se strpos devolve algum valor.
12
de
banco
de
dados
MySQL,
que
pode
ser
copiado
gratuitamente
no
site
http://www.mysql.org.
Para interagir com uma base de dados SQL existem trs comandos bsicos que devem
ser utilizados: um que faz a conexo com o servidor de banco de dados, um que seleciona a base de dados
a ser utilizada e um terceiro que executa uma query SQL.
Assim, se a conexo for bem sucedida (existir um servidor no endereo especificado que
possua o usurio com a senha fornecida), o identificador da conexo fica armazenado na varivel
$conexo.
13
explicitar esse valor, para facilitar a legibilidade do cdigo. No nosso exemplo, a base de dados a ser
selecionada possui o nome ged:
mysql_select_db(ged, $conexao);
Aps a execuo desse comando qualquer consulta executada para aquela conexo
utilizar a base de dados selecionada.
(nome,email)
VALUES
(nome,email)
VALUES
VALUES
VALUES
mysql_query($cria, $conexao);
14
mysql_query($insere1,
mysql_query($insere2,
mysql_query($insere3,
mysql_query($insere4,
$conexao);
$conexao);
$conexao);
$conexao);
mysql_fetch_row, respectivamente.
O comando mysql_result tem a seguinte sintaxe:
int
[campo]);
mysql_result(int
resultado,
int
linha,
mixed
mysql_query, linha especifica a tupla a ser exibida, j que uma query SELECT pode retornar
diversas tuplas, e campo o identificador do campo a ser exibido, sendo o tipo descrito como mixed
pela possibilidade de ser de diversos tipos (neste caso, inteiro ou string). Vejamos um exemplo utilizando
a tabela criada anteriormente:
O cdigo acima ir imprimir todos os registros da tabela exemplo numa tabela html. Se o
programador
desejar
pular
alguma(s)
linha(s)
do
resultado,
poder
utilizar
funo
mysql_data_seek, que tem por objetivo definir qual ser a prxima linha da memria de resultados
a ser impressa. Sua sintaxe :
16
4. Tipos
Tipos Suportados
Inteiro
Ponto flutuante
String
Array
Objeto
$vivas = 1234; #
$vivas = -234; #
$vivas = 0234; #
#
$vivas = 0x34; #
#
A diferena entre inteiros simples e long est no nmero de bytes utilizados para
armazenar a varivel. Como a escolha feita pelo interpretador PHP de maneira transparente para o
usurio, podemos afirmar que os tipos so iguais.
Nmeros em Ponto Flutuante (double ou float)
Uma varivel pode ter um valor em ponto flutuante com atribuies que sigam as
seguintes sintaxes:
17
$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";
?>
A sada desse script ser "---$teste--\n".
<?
$teste = "Mauricio";
$vivas = "---$teste---\n";
echo "$vivas";
?>
A sada desse script ser "---Mauricio--" (com uma quebra de linha no final).
18
Sintaxe
Significado
\n
Nova linha
\r
\t
Tabulao horizontal
\\
A prpria barra ( \ )
\$
O smbolo $
Aspa simples
Aspa dupla
No apndice 01 est disponvel uma lista das funes utilizadas no tratamento de strings.
Arrays
Arrays em PHP podem ser observados como mapeamentos ou como vetores indexados.
Mais precisamente, um valor do tipo array um dicionrio onde os ndices so as chaves de acesso. Vale
ressaltar que os ndices podem ser valores de qualquer tipo e no somente inteiros. Inclusive, se os ndices
forem todos inteiros, estes no precisam formar um intervalo contnuo
Como a checagem de tipos em PHP dinmica, valores de tipos diferentes podem ser
usados como ndices de array, assim como os valores mapeados tambm podem ser de diversos tipos.
Exemplo:
<?
$cor[1] = vermelho;
$cor[2] = verde;
$cor[3] = azul;
$cor[teste] = 1;
?>
Equivalentemente, pode-se escrever:
<?
$cor = array(1 => vermelho, 2 => verde, 3 => azul,
teste => 1);
?>
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:
19
$arr = array(1=>um,3=>tres,a=>letraA,2=>dois);
list($a,$b,$c,$d) = $arr;
Aps a execuo do cdigo acima temos os seguintes valores:
$a
$b
$c
$d
==
==
==
==
null
um
dois
tres
Devemos observar que varivel $a no foi atribudo valor, pois no array no existe
elemento com ndice 0 (zero). Outro detalhe importante que o valor tres foi atribudo varivel $d, e
no a $b, pois seu ndice 3, o mesmo que $d na lista. Por fim, vemos que o valor letraA no foi
atribudo a elemento algum da lista pois seu ndice no inteiro.
Os ndices da lista servem apenas como referncia ao interpretador PHP para realizar as
atribuies, no podendo ser acessados de maneira alguma pelo programador. De maneira diferente do
array, uma lista no pode ser atribuda a uma varivel, servindo apenas para fazer mltiplas atribuies
atravs de um array.
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();
A utilizao de objetos ser mais detalhada mais frente.
20
Booleanos
PHP no possui um tipo booleano, mas capaz de avaliar expresses e retornar true ou
false, atravs do tipo integer: usado o valor 0 (zero) para representar o estado false, e qualquer valor
diferente de zero (geralmente 1) para representar o estado true.
Transformao de tipos
Quando ocorrem determinadas operaes (+, por exemplo) entre dois valores de tipos
diferentes, o PHP converte o valor de um deles automaticamente (coero). interessante notar que se o
operando for uma varivel, seu valor no ser alterado.
O tipo para o qual os valores dos operandos sero convertidos determinado da seguinte
forma: Se um dos operandos for float, o outro ser convertido para float, seno, se um deles for
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
Se a string contiver um ponto em sua parte numrica a ser analisada, ele ser
considerado, e o valor obtido ser double;
double;
Exemplos:
$vivas = 1 + 10.5;
$vivas = 1 + -1.3e3;
// $vivas == 11.5
// $vivas == -1299
21
$vivas
$vivas
$vivas
$vivas
=
=
=
=
1
1
1
1
+
+
+
+
teste10.5; // $vivas == 1
10testes; // $vivas == 11
" 10testes";
// $vivas == 11
"+ 10testes";
// $vivas == 1
Exemplo:
$vivas =
$vivas =
$vivas =
$vivas =
15;
(double) $vivas
3.9
(int) $vivas
//
//
//
//
//
(string)
(array)
(object)
A funo settype converte uma varivel para o tipo especificado, que pode ser
integer, double, string, array ou object.
Exemplo:
$vivas = 15;
settype($vivas,double)
// $vivas integer
// $vivas double
22
5. Constantes
Constantes pr-definidas
Definindo constantes
Para definir constantes utiliza-se a funo define. Uma vez definido, o valor de uma
constante no poder mais ser alterado. Uma constante s pode conter valores escalares, ou seja, no pode
conter nem um array nem um objeto. A assinatura da funo define a seguinte:
23
6. Operadores
Aritmticos
adio
subtrao
multiplicao
diviso
mdulo
de strings
concatenao
de atribuio
24
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
Comparao
25
==
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
Podem ser utilizados de duas formas: antes ou depois da varivel. Quando utilizado
antes, retorna o valor da varivel antes de increment-la ou decrement-la. Quando utilizado depois,
retorna o valor da varivel 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
26
Precedncia
Associatividade
Operadores
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
no associa
new
20.
27
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;
Para que comando2 esteja relacionado ao if preciso utilizar um bloco:
if ($x == $y){
comando1;
comando2;
}
Comandos de seleo
28
if
O mais trivial dos comandos condicionais o if. Ele testa a condio e executa o
comando indicado se o resultado for true (valor diferente de zero). Ele possui duas sintaxes:
if (expresso)
comando;
if (expresso):
comando;
. . .
comando;
endif;
Para incluir mais de um comando no if da primeira sintaxe, preciso utilizar um bloco,
demarcado por chaves.
if (expresso)
comando;
else
comando;
if (expresso):
comando;
. . .
comando;
else
comando;
. . .
comando;
endif;
if (expressao1)
comando1;
else
if (expressao2)
comando2;
else
if (expressao3)
comando3;
else
comando4;
foi criado o comando, tambm opcional elseif. Ele tem a mesma funo de um
else e um if usados sequencialmente, como no exemplo acima. Num mesmo if podem ser utilizados
diversos elseifs, ficando essa utilizao a critrio do programador, que deve zelar pela legibilidade
de seu script.
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; ]
30
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;
}
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 acima, se $i for igual a zero, os trs comandos print sero executados. Se
$i for igual a 1, os dois ltimos print sero executados. O comando s funcionar da maneira desejada
se $i for igual a 2.
Em outras linguagens que implementam o comando switch, ou similar, 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. O exemplo abaixo funciona perfeitamente:
switch ($s) {
case casa:
print A casa amarela;
case arvore:
print a rvore bonita;
case lampada:
print joao apagou a lampada;
}
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;
32
A expresso s testada a cada vez que o bloco de instrues termina, alm do teste
inicial. Se o valor da expresso passar a ser false no meio do bloco de instrues, a execuo segue at
o final do bloco. Se no teste inicial a condio for avaliada como false, o bloco de comandos no ser
executado.
O exemplo a seguir mostra o uso do while para imprimir os nmeros de 1 a 10:
$i = 1;
while ($i <=10)
print $i++;
do... while
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 tipo de lao mais complexo o for. Para os que programam em C, C++ ou Java, a
assimilao do funcionamento do for natural. Mas para aqueles que esto acostumados a linguagens
como Pascal, h uma grande mudana para o uso do for. As duas sintaxes permitidas so:
for (<inicializacao>;<condicao>;<incremento>)
<comando>;
for (<inicializacao>;<condicao>;<incremento>) :
<comando>;
. . .
33
<comando>;
endfor;
As trs expresses que ficam entre parnteses tm as seguintes finalidades:
34
<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.
Continue
true) o interpretador encontrar um continue, que faz com que os comandos seguintes do interior
do lao sejam ignorados, seguindo para a prxima iterao.
35
8. Funes
Definindo funes
Valor de retorno
Argumentos
possvel passar argumentos para uma funo. Eles devem ser declarados logo aps o
nome da funo, entre parnteses, e tornam-se variveis pertencentes ao escopo local da funo. A
declarao do tipo de cada argumento tambm utilizada apenas para efeito de documentao.
Exemplo:
36
function imprime($texto){
echo $texto;
}
imprime(teste de funes);
Exemplo:
function mais5($numero) {
$numero += 5;
}
$a = 3;
mais5($a); //$a continua valendo 3
No exemplo acima, como a passagem de parmetros por valor, a funo mais5 intil,
j que aps a execuo sair da funo o valor anterior da varivel recuperado. Se a passagem de valor
fosse feita por referncia, a varivel $a teria 8 como valor. O que ocorre normalmente que ao ser
chamada uma funo, o interpretador salva todo o escopo atual, ou seja, os contedos das variveis. Se
uma dessas variveis for passada como parmetro, seu contedo fica preservado, pois a funo ir
trabalhar na verdade com uma cpia da varivel. Porm, se a passagem de parmetros for feita por
referncia, toda alterao que a funo realizar no valor passado como parmetro afetar a varivel que o
contm.
H duas maneiras de fazer com que uma funo tenha parmetros passados por
referncia: indicando isso na declarao da funo, o que faz com que a pasagem de parmetros sempre
seja assim; e tambm na prpria chamada da funo. Nos dois casos utiliza-se o modificador &.
Vejamos um exemplo que ilustra os dois casos:
37
mais5($a, &$b);
valores alterados. */
/*
Aqui
as
duas
variveis
tero
seus
Em PHP possvel ter valores default para argumentos de funes, ou seja, valores que
sero assumidos em caso de nada ser passado no lugar do argumento. Quando algum parmetro
declarado desta maneira, a passagem do mesmo na chamada da funo torna-se opcional.
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.
38
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();
O trecho acima no produzir sada alguma, pois a varivel $vivas de escopo global, e
no pode ser referida num escopo local, mesmo que no haja outra com nome igual que cubra a sua
visibilidade. Para que o script funcione da forma desejada, a varivel global a ser utilizada deve ser
declarada.
39
Exemplo:
$vivas = Testando;
function Teste() {
global $vivas;
echo $vivas;
}
Teste();
Uma declarao global pode conter vrias variveis, separadas por vrgulas. Uma
outra maneira de acessar variveis de escopo global dentro de uma funo utilizando um array prdefinido pelo PHP cujo nome $GLOBALS. O ndice para a varivel referida o proprio nome da
varivel, sem o caracter $. O exemplo acima e o abaixo produzem o mesmo resultado:
Exemplo:
$vivas = "Testando";
function Teste() {
echo $GLOBALS["vivas"]; // imprime $vivas
echo $vivas; // no imprime nada
}
Teste();
40
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++;
}
O ltimo comando da funo intil, pois assim que for encerrada a execuo da funo
a varivel $a perde seu valor. J no exemplo seguinte, a cada chamada da funo a varivel $a ter seu
valor impresso e ser incrementada:
function Teste() {
static $a = 0;
echo $a;
$a++;
}
O modificador static muito utilizado em funes recursivas, j que o valor de algumas
variveis precisa ser mantido. Ele funciona da seguinte forma: O valor das variveis declaradas como
estticas mantido ao terminar a execuo da funo. Na prxima execuo da funo, ao encontrar
novamente a declarao com static, o valor da varivel recuperado.
Em outras palavras, uma varivel declarada como static tem o mesmo tempo de
vida que uma varivel global, porm sua visibilidade restrita ao escopo local em que foi declarada e s
recuperada aps a declarao.
Exemplo:
function Teste() {
echo "$a";
static $a = 0;
$a++;
}
O exemplo acima no produzir sada alguma. Na primeira execuo da funo, a
impresso ocorre antes da atribuio de um valor funo, e portanto o contedo de $a nulo (string
vazia). Nas execues seguintes da funo Teste() a impresso ocorre antes da recuperao do valor de
$a, e portanto nesse momento seu valor ainda nulo. Para que a funo retorne algum valor o
modificador static deve ser utilizado.
41
Variveis Variveis
O PHP tem um recurso conhecido como variveis variveis, que consiste em variveis
cujos nomes tambm so variveis. Sua utilizao feita atravs do duplo cifro ($$).
$a = teste;
$$a = Mauricio Vivas;
O exemplo acima e equivalente ao seguinte:
$a = teste;
$teste = Mauricio Vivas;
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:
http://localhost/teste.php3
se
e
seu
script
voc
php
est
chama
localizado
com
em
url
URLencode
Por
exemplo:
texto
Testando
!!
em
urlencode
fica
Testando+1+2+3+%21%21
O PHP possui duas funes para tratar com texto em urlencode. Seguem suas sintaxes:
42
Variveis de ambiente
O PHP possui diversas variveis de ambiente, como a $PHP_SELF, por exemplo, que
contm o nome e o path do prprio arquivo. Algumas outras contm informaes sobre o navegador do
usurio, o servidor http, a verso do PHP e diversas informaes. Para ter uma listagem de todas as
variveis e constantes de ambiente e seus respectivos contedos, deve-se utilizar a funo
phpinfo().
funo
So
as
funes
is_int,
is_integer,
is_real,
is_long,
43
possvel desalocar uma varivel se ela no for usada posteriormente atravs da funo
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
A funo empty
44
45
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->funcao1(
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.
Como exemplo da utilizao de classes e objetos, podemos utilizar a classe conta, que
define uma conta bancria bastante simples, com funes para ver saldo e fazer um crdito.
class conta {
var $saldo;
function saldo() {
return $this->saldo;
}
function credito($valor) {
46
$this->saldo += $valor;
}
}
$minhaconta = new conta;
$minhaconta->saldo();
// a variavel interna no foi
// inicializada, e no contm
// valor algum
$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 conta {
var $saldo;
function conta () {
$this.saldo = 0;
}
function saldo() {
return $this->saldo;
}
function credito($valor) {
$this->saldo += $valor;
}
}
47
Podemos perceber que a classe conta agora possui um construtor, que inicializa a
varivel $saldo com o valor 0.
Um construtor pode conter argumentos, que so opcionais, o que torna esta ferramenta
mais poderosa. No exemplo acima, o construtor da classe conta pode receber como argumento um valor,
que seria o valor inicial da conta.
Vale observar que para classes derivadas, o construtor da classe pai no
automaticamente herdado quando o construtor da classe derivada chamado.
48
12. Concluses
49
50
htmlentities
para 'º'
para 'ª'
para 'á'
para ç'
nl2br
Exemplo:
echo nl2br(Mauricio\nVivas\n);
Imprime:
Maurcio<br>Vivas<br>
get_meta_tags
Abre um arquivo html e percorre o cabealho em busca de meta tags, retornando num
array todos os valores encontrados.
Exemplo:
No arquivo teste.html temos:
...
<head>
<meta name="author" content="jose">
<meta name="tags" content="php3 documentation">
...
</head><!-- busca encerra aqui -->
...
a execuo da funo:
get_meta_tags(teste.html);
retorna o array:
array(author=>jose,tags=>"php3 documentation");
strip_tags
Exemplo:
strip_tags('<a href="teste1.php3">testando</a><br>');
Retorna a string testando
urlencode
urldecode
52
Implode e join
Exemplo:
$partes = array("a", "casa nmero", 13, " azul");
$inteiro = join(" ",$partes);
$inteiro passa a conter a string:
a casa nmero 13 azul
split
Exemplo:
$data = 11/14/1975;
$data_array = split(/,$data);
O cdigo acima faz com que a varivel $data_array receba
o valor:
array(11,14,1975);
explode
int
similar_text(string
[porcentagem]);
str1,
string
str2,
double
53
Exemplo:
$num = similar_text("teste", "testando",&$porc);
As variveis passam a ter os seguintes valores:
$num == 4; $porc == 61.538461538462
strcasecmp
str1 > str2, e um valor menor que zero se str1 < str2. Esta funo case insensitive, ou
seja, maisculas e minsculas so tratadas como iguais.
strcmp
strstr
Exemplo:
strstr("Mauricio Vivas", "Viv"); // retorna Vivas
stristr
54
Funciona de maneira semelhante funo strstr, com a diferena que esta case
insensitive, ou seja, maisculas e minsculas so tratadas como iguais.
strpos
strrpos
chop
Exemplo:
chop(
Teste
\n
\n
); // retorna
Teste
ltrim
Exemplo:
ltrim(
Teste
\n
\n ); // retorna Teste
\n
\n
trim
55
Exemplo:
trim(
Teste
\n
\n ); // retorna Teste
strrev
Exemplo:
strrev(Teste); // retorna etseT
strtolower
Exemplo:
strtolower(Teste); // retorna teste
strtoupper
Exemplo:
strtolower(Teste); // retorna TESTE
ucfirst
Exemplo:
ucfirst(teste de funcao); // retorna Teste de funcao
56
ucwords
Exemplo:
ucwords(teste de funcao); // retorna Teste De Funcao
str_replace
string
str_replace(string
str1,
string
str2,
string
str3);
Altera todas as ocorrncias de str1 em str3 pela string str2.
Funes diversas
chr
ord
echo
print(string arg);
Imprime o argumento fornecido.
57
strlen
58
Funes Genricas
Array
array array(...);
a funo que cria um array a partir dos parmetros forncidos. possvel fornecer o
ndice de cada elemento. Esse ndice pode ser um valor de qualquer tipo, e no apenas de inteiro. Se o
ndice no for fornecido o PHP atribui um valor inteiro sequencial, a partir do 0 ou do ltimo ndice
inteiro explicitado. Vejamos alguns exemplos:
Exemplo 1
$teste = array("um", "dois","tr"=>"tres",5=>"quatro","cinco");
Temos o seguinte mapeamento:
0 => um (0 o primeiro ndice, se no houver um explicito)
1 => dois (o inteiro seguinte)
tr => tres
5 => quatro (valor explicitado)
6 => cinco (o inteiro seguinte ao ltimo atribudo, e no o
prximo valor, que seria 2)
Exemplo 2
$teste
=
6=>"dois","tr"=>"tres",5=>"quatro","cinco");
array("um",
range
59
shuffle
sizeof
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
next
60
prev
pos
key
Exemplo:
/*funo que percorre todos os elementos de um array e
imprime seus ndices e valores */
function imprime_array($arr) {
reset($arr);
while (list($chave,$valor) = each($arr))
echo Chave: $chave. Valor: $valor;
}
61
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
rsort
asort
arsort
ksort
usort
62
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
uksort
63