Expressões
são
as
peças
de
construção
mais
importantes
do
PHP
.
No
PHP
,
quase
tudo
o
que
você
escreve
são
expressões
.
A
maneira
mais
simples
e
ainda
mais
precisa
de
definir
uma
expressão
é
"
tudo
o
que
tem
um
valor
"
.
As
formas
mais
básicas
de
expressões
são
constantes
e
variáveis
.
Quando
você
digita
"
$a
=
5"
,
você
está
atribuindo
'5
'
para
$a
.
'5'
,
obviamente
,
tem
o
valor
5
,
ou
,
em
outras
palavras
,
'5
'
é
uma
expressão
com
o
valor
5
(neste
caso
,
'5
'
é
uma
constante
inteira
)
.
Depois
desta
atribuição
,
você
pode
esperar
que
o
valor
de
$a
seja
5
também
,
assim
se
você
escrever
$b
=
$a
,
você
pode
esperar
que
$b
se
comporte
da
mesma
forma
que
se
você
escrevesse
$b
=
5
.
Em
outras
palavras
,
$a
é
uma
expressão
com
valor
5
também
.
Se
tudo
funcionou
bem
,
isto
é
exatamente
o
que
acontecerá
.
Exemplos
ligeiramente
mais
complexos
para
expressões
são
as
funções
.
Por
exemplo
,
considere
a
seguinte
função
:
Assumindo
que
você
está
familiarizado
com
o
conceito
de
funções
(
se
não
estiver
,
dê
uma
olhada
no
capítulo
sobre
funções)
,
você
pode
assumir
que
digitar
$c
=
foo(
)
é
essencialmente
a
mesma
coisa
que
escrever
$c
=
5
,
e
você
está
certo
.
Funções
são
expressões
com
o
valor
igual
ao
seu
valor
de
retorno
.
Como
foo(
)
retorna
5
,
o
valor
da
expressão
'foo()
'
é
5
.
Geralmente
,
as
funções
não
retornam
apenas
um
valor
estático
,
mas
computam
algo
.
Obviamente
,
os
valores
em
PHP
não
têm
que
ser
inteiros
,
e
muito
freqüentemente
eles
não
são
.
O
PHP
suporta
três
tipos
de
valores
escalares
:
valores
inteiros
,
valores
de
ponto
flutuante
e
valores
de
string
(
valores
escalares
são
valores
que
você
não
pode
quebrar
em
pedaços
menores
,
diferente
de
matrizes
,
por
exemplo
)
.
O
PHP
também
suporta
dois
tipos
compostos
(
não-escalares
)
:
matrizes
e
objetos
.
Cada
um
destes
tipos
de
valor
podem
ser
atribuídos
a
variáveis
ou
retornadas
de
funções
.
Até
agora
,
os
usuários
de
PHP
/
FI
2
não
sentiriam
qualquer
mudança
.
Porém
,
o
PHP
traz
expressões
bem
mais
novas
,
da
mesma
forma
que
muitas
outras
linguagens
.
O
PHP
é
uma
linguagem
orientada
a
expressões
,
no
sentido
de
que
quase
tudo
são
expressões
.
Considere
o
exemplo
com
o
qual
já
lidamos
,
'
$a
=
5
'
.
É
fácil
ver
que
há
dois
valores
envolvidos
aqui
,
o
valor
da
constante
inteira
'
5
'
,
e
o
valor
de
$a
que
está
sendo
atualizado
para
5
também
.
Mas
a
verdade
é
que
há
um
valor
adicional
envolvido
,
e
que
é
o
próprio
valor
da
atribuição
.
A
própria
atribuição
é
avaliada
com
o
valor
atribuído
,
neste
caso
5
.
Na
prática
,
significa
que
'
$a
=
5
'
,
independente
do
que
faça
,
é
uma
expressão
com
o
valor
5
.
Portanto
,
escrever
algo
como
'
$b
=
($a
=
5)
'
é
como
escrever
'$a
=
5
;
$b
=
5
;
'
(um
ponto-e-vírgula
marca
o
fim
do
comando
)
.
Como
atribuições
são
analisadas
da
direita
para
a
esquerda
,
você
também
pode
escrever
'
$b
=
$a
=
5
'
.
Outro
bom
exemplo
de
orientação
de
expressão
é
o
pré
e
o
pós-incremento
e
decremento
.
Usuários
de
PHP
/
FI
2
e
muitas
outras
linguagens
podem
estar
familiarizados
com
a
notação
de
variável+
+
e
variável--
.
Estes
são
os
operadores
de
incremento
e
decremento
.
No
PHP
/
FI
2
,
o
comando
'
$a++
'
não
tem
valor
(não
é
uma
expressão
)
,
e
portanto
você
não
pode
atribuir
desta
forma
ou
usá-la
de
jeito
nenhum
.
O
PHP
evoluiu
a
capacidade
de
incremento
/
decremento
criando
estas
expressões
também
,
como
em
C
.
Em
PHP
,
como
em
C
,
há
dois
tipos
de
incremento
-
pré-incremento
e
pós-incremento
.
Tanto
o
pré-incremento
quanto
o
pós-incremento
,
essencialmente
,
incrementam
variáveis
,
e
o
efeito
sobre
a
variável
é
idêntico
.
A
diferença
é
com
o
valor
da
expressão
de
incremento
.
O
pré-incremento
,
que
é
escrito
'
++$variavel'
,
é
avaliado
como
o
valor
de
incremento
(o
PHP
incrementa
a
variável
antes
de
ler
seu
valor
,
por
isso
o
nome
pré-incremento
)
.
O
pós-incremento
,
que
é
escrito
'
$variavel++
'
é
avaliado
como
o
valor
original
da
variável
,
antes
de
ser
incrementada
(o
PHP
incrementa
a
variável
depois
de
ler
seu
valor
,
por
isso
o
nome
'pós-incremento'
)
.
Um
tipo
muito
comum
de
expressão
são
expressões
de
comparação
.
Estas
expressões
são
avaliadas
como
0
ou
1
,
significando
FALSE
ou
TRUE
,
respectivamente
.
O
PHP
suporta
(
maior
que)
,
=
(maior
ou
igual)
,
==
(igual)
,
!=
(diferente)
,
(menor
que
)
e
=(menor
ou
igual
)
.
Estas
expressões
são
usadas
mais
freqüentemente
dentro
de
instruções
condicionais
,
como
em
comandos
if
.
O
último
exemplo
de
expressões
com
que
nós
vamos
lidar
aqui
são
as
expressões
combinadas
operador-atribuição
.
Você
já
sabe
que
se
você
quer
incrementar
$a
de
1
,
você
só
precisa
escrever
'
$a++
'
ou
'++$a
'
.
Mas
e
se
você
quiser
somar
mais
que
um
a
ele
,
por
exemplo
3
?
Você
poderia
escrever
'
$a++
'
várias
vezes
,
mas
esta
obviamente
não
é
uma
forma
muito
eficiente
ou
confortável
.
Uma
prática
muito
mais
comum
é
escrever
'
$a
=
$a
+
3'
.
'$a
+
3
'
é
avaliada
como
o
valor
de
$a
mais
3
,
e
é
atribuído
de
volta
a
$a
,
que
resulta
em
incrementar
$a
de
3
.
Em
PHP
,
como
em
várias
outras
linguagens
como
o
C
,
você
pode
escrever
isto
de
uma
forma
mais
curta
,
que
com
o
tempo
se
torna
mais
limpa
e
rápida
de
se
entender
,
também
.
Somar
3
ao
valor
corrente
de
$a
pode
ser
escrito
'
$a
+=3
'
.
Isto
significa
exatamente
"
pegue
o
valor
de
$a
,
some
3
a
ele
,
e
atribua-o
de
volta
a
$a
.
"
Além
de
ser
mais
curto
e
mais
limpo
,
isto
também
resulta
em
execução
mais
rápida
.
O
valor
de
'
$a
+=
3
'
,
como
o
valor
de
uma
atribuição
regular
,
é
o
valor
atribuído
.
Note
que
NÃO
é
3
,
mas
o
valor
combinado
de
$a
mais
3
(
este
é
o
valor
que
é
atribuído
a
$a
)
.
Qualquer
operador
de
dois
parâmetros
pode
ser
usado
neste
modo
operador-atribuição
,
por
exemplo
'
$a
-=
5
'
(subtrai
5
do
valor
de
$a)
,
'$b
*=
7
'
(multiplica
o
valor
de
$b
por
7
)
,
etc
.
Há
mais
uma
expressão
que
podem
parecer
estranha
se
você
não
a
viu
em
outras
linguagens
,
o
operador
condicional
ternário
:
Se o valor da primeira sub-expressão é verdadeiro (
TRUE
, não-zero), então a segunda sub-expressão é avaliada, e este é o
resultado da expressão condicional. Caso contrário, a terceira
sub-expressão é avaliada e este é o valor.
O
seguinte
exemplo
deve
ajudá-lo
a
entender
um
pouco
melhor
pré
e
pós-incremento
e
expressões
em
geral
:
No
começo
do
capítulo
,
nós
dissemos
que
descreveríamos
os
vários
tipos
de
comandos
,
e
como
prometido
,
expressões
podem
ser
comandos
.
Porém
,
nem
toda
expressão
é
um
comando
.
Neste
caso
,
um
comando
tem
a
forma
'
expr
'
'
;
'
,
ou
seja
,
uma
expressão
seguida
de
ponto-e-vírgula
.
E
'
$b=$a=5
;'
,
$a=5
é
uma
expressão
válida
,
mas
não
é
um
comando
por
si
só
.
'$b=$a=5
;
'
porém
é
um
comando
válido
.
Uma
última
coisa
que
vale
mencionar
é
o
valor-verdade
de
expressões
.
Em
muitos
eventos
,
principalmente
em
instruções
condicionais
e
loops
,
você
não
está
interessado
no
valor
específico
da
expressão
,
mas
somente
se
ela
significa
TRUE
ou
FALSE
(
o
PHP
não
tem
um
tipo
booleano
dedicado
)
.
As
constantes
TRUE
e
FALSE
(
insensitivas
ao
caso
)
são
seus
dois
valores
booleanos
possíveis
.
As
vezes
uma
expressão
é
automaticamente
convertida
para
um
booleano
.
Veja
a
seção
sobre
type-casting
para
detalhes
de
como
isso
é
feito
.
O
PHP
fornece
uma
implementação
completa
e
poderosa
de
expressões
,
e
a
completa
documentação
dela
vai
além
do
escopo
deste
manual
.
Os
exemplos
acima
devem
dar
a
você
uma
boa
idéia
sobre
o
que
são
as
expressões
e
como
você
pode
construir
expressões
úteis
.
Através
do
restante
do
manual
nós
escreveremos
expr
ou
expressao
para
indicar
qualquer
expressão
PHP
válida
.