Escolar Documentos
Profissional Documentos
Cultura Documentos
PHP Tutorial2
PHP Tutorial2
ndice
NDICE................................................................................
..........2
1. INTRODUO...................................................................
........5
O QUE PHP?.....................................................................................5
O QUE PODE SER FEITO COM PHP?.............................................................5
COMO SURGIU A LINGUAGEM PHP?.............................................................5
2. SINTAXE BSICA.....................................................................7
DELIMITANDO O CDIGO PHP....................................................................7
SEPARADOR DE INSTRUES........................................................................7
NOMES DE VARIVEIS...............................................................................7
COMENTRIOS........................................................................................8
Comentrios de uma linha:............................................................8
Comentrios de mais de uma linha:...............................................8
3. CRIANDO OS PRIMEIROS SCRIPTS.....................................10
PRIMEIRO EXEMPLO...............................................................................10
UTILIZANDO FORMULRIOS HTML............................................................11
INTERAGINDO COM O BROWSER..................................................................12
ACESSANDO BANCOS DE DADOS................................................................13
Conexo com o servidor...............................................................13
Seleo do banco de dados..........................................................14
Execuo de queries SQL.............................................................14
Tratamento de resultados de query SELECT..............................15
4. TIPOS.............................................................................
.........18
TIPOS SUPORTADOS...............................................................................18
Inteiros (integer ou long).............................................................18
Nmeros em Ponto Flutuante (double ou float)..........................19
Strings...........................................................................................
19
Arrays..........................................................................................
..20
Listas...................................................................... ..........................20
Objetos..............................................................................
............21
Booleanos...................................................................................
...22
TRANSFORMAO DE TIPOS.......................................................................22
Coeres.......................................................................................22
Transformao explcita de tipos.................................................23
Com a funo settype...................................................................23
5. CONSTANTES.........................................................................25
CONSTANTES PR-DEFINIDAS.....................................................................25
DEFININDO CONSTANTES.........................................................................25
6. OPERADORES.......................................................................
..26
ARITMTICOS.......................................................................................26
DE STRINGS.........................................................................................26
DE ATRIBUIO......................................................................................26
BIT A BIT.............................................................................................27
LGICOS.............................................................................................27
COMPARAO.......................................................................................27
EXPRESSO CONDICIONAL........................................................................28
DE INCREMENTO E DECREMENTO................................................................28
ORDEM DE PRECEDNCIA DOS OPERADORES...................................................28
7. ESTRUTURAS DE CONTROLE...............................................30
BLOCOS.............................................................................................30
COMANDOS DE SELEO..........................................................................30
if...............................................................................
.....................31
switch....................................................................................
........33
COMANDOS DE REPETIO........................................................................34
while...........................................................................................
...34
do... while.....................................................................................
.35
for...........................................................................................
.......35
QUEBRA DE FLUXO.................................................................................37
Break.......................................................................................
......37
Continue........................................................................................
37
8. FUNES............................................................................
....39
DEFININDO FUNES..............................................................................39
VALOR DE RETORNO...............................................................................39
ARGUMENTOS......................................................................................39
Passagem de parmetros por referncia.....................................40
Argumentos com valores pr-definidos (default)........................41
CONTEXTO..........................................................................................42
ESCOPO.............................................................................................42
9. VARIVEIS..............................................................................44
O MODIFICADOR STATIC...........................................................................44
VARIVEIS VARIVEIS.............................................................................45
VARIVEIS ENVIADAS PELO NAVEGADOR.........................................................45
URLencode...................................................................................45
VARIVEIS DE AMBIENTE..........................................................................46
VERIFICANDO O TIPO DE UMA VARIVEL........................................................46
Funo que retorna o tipo da varivel.........................................46
Funes que testam o tipo da varivel........................................47
DESTRUINDO UMA VARIVEL......................................................................47
VERIFICANDO SE UMA VARIVEL POSSUI UM VALOR...........................................47
A funo isset...............................................................................47
A funo empty.............................................................................48
10. CLASSES E OBJETOS...........................................................49
CLASSE..............................................................................................49
OBJETO..............................................................................................49
A VARIVEL $THIS.................................................................................49
SUBCLASSES.......................................................................................50
CONSTRUTORES....................................................................................50
12. CONCLUSES................................................................
...........
13. BIBLIOGRAFIA E REFERNCIAS........................................53
APNDICE 01 - FUNES PARA TRATAMENTO DE STRINGS 54
FUNES RELACIONADAS A HTML............................................................54
htmlspecialchars...........................................................................
54
htmlentities............................................................................
.......54
nl2br..........................................................................................
....54
get_meta_tags...............................................................................55
strip_tags......................................................................................55
urlencode......................................................................................55
urldecode......................................................................................55
FUNES RELACIONADAS A ARRAYS.............................................................56
Implode e join...............................................................................56
split...............................................................................................56
explode.....................................................................................
.....56
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.
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.
Em meados de 1995 o interpretador foi reescrito, e ganhou o nome
de PHP/FI, o FI veio de um outro pacote escrito por Rasmus que interpretava
dados de formulrios HTML (Form Interpreter). Ele combinou os scripts do pacote
Personal Home Page Tools com o FI e adicionou suporte a mSQL, nascendo assim o
PHP/FI, que cresceu bastante, e as pessoas passaram a contribuir com o projeto.
Estima-se que em 1996 PHP/FI estava sendo usado por cerca de
15.000 sites pelo mundo, e em meados de 1997 esse nmero subiu para mais de
50.000. Nessa poca houve uma mudana no desenvolvimento do PHP. Ele deixou
de ser um projeto de Rasmus com contribuies de outras pessoas para ter uma
equipe de desenvolvimento mais organizada. O interpretador foi reescrito por Zeev
Suraski e Andi Gutmans, e esse novo interpretador foi a base para a verso 3.
Atualmente o uso do PHP3 vem crescendo numa velocidade incrvel,
e j est sendo desenvolvida a verso 4 do PHP.
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
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
*/
?>
<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>
Ao clicar
num
boto Submit
em um formulrio HTML as
informaes dos campos sero enviadas ao servidor especificado para que possa
ser produzida uma resposta. O PHP trata esses valores como variveis, cujo nome
o nome do campo definido no formulrio. O exemplo a seguir mostra isso, e
mostra tambm como o cdigo PHP pode ser inserido em qualquer parte do
cdigo 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
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<? echo $HTTP_USER_AGENT; ?>
</body>
</html>
figura 03
figura 04
Observe que o resultado mostra caractersticas de cada browser,
<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>
/*nome_base*/,
int
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
VALUES
Ao
executar
uma
query
SQL
SELECT
atravs
do
comando
comando
mysql_result
comando
mysql_fetch_row,
respectivamente.
O comando mysql_result tem a seguinte sintaxe:
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:
4. Tipos
Tipos Suportados
Inteiro
Ponto flutuante
String
Array
Objeto
$vivas = 1234; #
$vivas = -234; #
$vivas = 0234; #
#
$vivas = 0x34; #
#
$vivas = 1.234;
$vivas = 23e4; # equivale a 230.000
Strings
<?
$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).
\n
\r
\t
\\
\$
\
\
Nova linha
Retorno de carro
(semelhante a \n)
Tabulao horizontal
A prpria barra ( \ )
O smbolo $
Aspa simples
Aspa dupla
Arrays
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:
list($a, $b, $c) = array(a, b, c);
O comando acima atribui valores s trs variveis simultaneamente.
bom notar que s so atribudos s variveis da lista os elementos do array que
possuem ndices inteiros e no negativos. No exemplo acima as trs atribuies
foram bem sucedidas porque ao inicializar um array sem especificar os ndices eles
passam a ser inteiros, a partir do zero. Um fator importante que cada varivel da
lista possui um ndice inteiro e ordinal, iniciando com zero, que serve para
determinar qual valor ser atribudo. No exemplo anterior temos $a com ndice 0,
$b com ndice 1 e $c com ndice 2. Vejamos um outro exemplo:
$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
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.
Booleanos
Transformao de tipos
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
double mantendo o valor. O sistema utilizado pelo PHP para converter de strings
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
Exemplo:
$vivas =
$vivas =
$vivas =
$vivas =
15;
(double) $vivas
3.9
(int) $vivas
//
//
//
//
//
(string)
(array)
(object)
Exemplo:
$vivas = 15;
settype($vivas,double)
// $vivas integer
// $vivas double
5. Constantes
Constantes pr-definidas
Definindo constantes
6. Operadores
Aritmticos
adio
subtrao
multiplicao
diviso
mdulo
de strings
concatenao
de atribuio
=
+=
-=
*=
/=
%=
.=
atribuio
atribuio
atribuio
atribuio
simples
com adio
com subtrao
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
igual a
!=
<
>
<=
diferente de
menor que
maior que
menor ou igual
>=
a
maior ou igual a
Expresso condicional
(expressao1)?(expressao2):( expressao3)
o interpretador PHP avalia a primeira expresso. Se ela for
verdadeira, a expresso retorna o valor de expresso2. Seno, retorna o valor de
expresso3.
de incremento e decremento
++
--
incremento
decremento
Quando
utilizado
depois,
retorna
valor
da
varivel
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
Ordem de precedncia dos operadores
Associatividade
Operadores
1.
esquerda
2.
esquerda
or
Precedncia
Associatividade
Operadores
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
new
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,
no
produzir
efeito
algum,
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
Tambm
chamados
de
condicionais,
os
comandos
de
seleo
if
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.
O else um complemento opcional para o if. Se utilizado, o
comando ser executado se a expresso retornar o valor false (zero). Suas duas
sintaxes so:
if (expresso)
comando;
else
comando;
if (expresso):
comando;
. . .
comando;
else
comando;
. . .
comando;
endif;
else
$maior = $b;
O exemplo acima coloca em $maior o maior valor entre $a e $b
Em determinadas situaes necessrio fazer mais de um teste, e
executar condicionalmente diversos comandos ou blocos de comandos. Para
facilitar o entendimento de uma estrutura do tipo:
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; ]
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;
}
importante compreender o funcionamento do switch para no
cometer enganos. O comando switch testa linha a linha os cases encontrados, e a
partir do 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
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;
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
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>;
. . .
<comando>;
endfor;
As trs expresses que ficam entre parnteses tm as seguintes
finalidades:
Inicializao: comando ou sequencia de comandos a serem realizados
antes do inicio do lao. Serve para inicializar variveis.
Condio: Expresso booleana que define se os comandos que esto
dentro do lao sero executados ou no. Enquanto a expresso for verdadeira
(valor diferente de zero) os comandos sero executados.
Incremento: Comando executado ao final de cada execuo do lao.
Um comando for funciona de maneira semelhante a um while
escrito da seguinte forma:
<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
continue, que faz com que os comandos seguintes do interior do lao sejam
ignorados, seguindo para a prxima iterao.
8. Funes
Definindo funes
Valor de retorno
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
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:
$num1 += 5;
$num2 += 5;
}
$a = $b = 1;
mais5($a, $b); /* Neste caso, s $num1 ter seu valor
alterado, pois a passagem por referncia est definida na
declarao da funo. */
mais5($a, &$b);
valores alterados. */
/*
Aqui
as
duas
variveis
tero
seus
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();
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.
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 pr-definido 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();
9. Variveis
O modificador static
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
Variveis Variveis
$a = teste;
$$a = Mauricio Vivas;
O exemplo acima e equivalente ao seguinte:
$a = teste;
$teste = Mauricio Vivas;
http://localhost/teste.php3
voc
http://localhost/teste.php3?vivas=teste,
chama
com
url
automaticamente
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.
URLencode
Variveis de ambiente
So as funes is_int,
is_integer,
is_real,
is_long,
possvel
desalocar
uma
varivel
se
ela
no
for
usada
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
false.
Classe
Uma classe um conjunto de variveis e funes relacionadas a essas
variveis.
Uma
vantagem
da
utilizao
poder
usufruir
do
recurso
de
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:
utilizar
as
$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) {
$this->saldo += $valor;
}
}
$minhaconta = new conta;
$minhaconta->saldo();
$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:
construtor
uma
funo
definida
na
classe
que
class conta {
var $saldo;
function conta () {
$this.saldo = 0;
}
function saldo() {
return $this->saldo;
}
function credito($valor) {
$this->saldo += $valor;
}
}
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.
12. Concluses
pesquisa
foi
baseada
no
manual
de
PHP,
disponvel
em
htmlentities
para 'º'
para 'ª'
para 'á'
para ç'
nl2br
Exemplo:
echo nl2br(Mauricio\nVivas\n);
Imprime:
Maurcio<br>Vivas<br>
get_meta_tags
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
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
Exemplo:
$num = similar_text("teste", "testando",&$porc);
As variveis passam a ter os seguintes valores:
$num == 4; $porc == 61.538461538462
strcasecmp
strcmp
strstr
Exemplo:
strstr("Mauricio Vivas", "Viv"); // retorna Vivas
stristr
strpos
strrpos
chop
Exemplo:
chop(
Teste
\n
\n
); // retorna
Teste
ltrim
Exemplo:
ltrim(
Teste
\n
\n ); // retorna Teste
\n
\n
trim
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
ucwords
Exemplo:
ucwords(teste de funcao); // retorna Teste De Funcao
str_replace
Funes diversas
chr
ord
echo
print(string arg);
Imprime o argumento fornecido.
strlen
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 = array("um", 6=>"dois","tr"=>"tres",5=>"quatro","cinco");
Temos o seguinte mapeamento:
0 => um
6 => dois
tr => tres
5 => quatro (seria 7, se no fosse explicitado)
7 => cinco (seria 6, se no estivesse ocupado)
Em geral, no recomendvel utilizar arrays com vrios tipos de
ndices, j que isso pode confundir o programador. No caso de realmente haver a
necessidade de utilizar esse recurso, deve-se ter bastante ateno ao manipular os
ndices do array.
range
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
prev
pos
key
Exemplo:
/*funo que percorre todos os elementos de um array e
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
uksort