Escolar Documentos
Profissional Documentos
Cultura Documentos
Pablo DallOglio
Novatec
Captulo 1
Introduo ao PHP
Ao longo deste livro utilizaremos diversas funes, comandos e estruturas de controle bsicos da linguagem PHP, que apresentaremos neste captulo. Conheceremos
as estruturas bsicas da linguagem, suas variveis e seus operadores e tambm um
conjunto de funes para manipulao de arquivos, arrays, bancos de dados, entre
outros.
20
21
aprimorar o PHP. Para tanto, reescreveram todo o cdigo-fonte, com base no PHP/FI2,
dando incio assim ao PHP 3, disponibilizado oficialmente em junho de 1998. Dentre
as principais caractersticas do PHP 3 estavam a extensibilidade, a possibilidade de
conexo com vrios bancos de dados, novos protocolos, uma sintaxe mais consistente,
suporte orientao a objetos e uma nova API, que possibilitava a criao de novos
mdulos e que acabou por atrair vrios desenvolvedores ao PHP. No final de 1998,
o PHP j estava presente em cerca de 10% dos domnios da internet. Nessa poca o
significado da sigla PHP mudou para PHP: Hypertext Preprocessor, retratando assim
a nova realidade de uma linguagem com propsitos mais amplos.
22
Extenso
Significado
.php
.class.php
.inc.php
Extenso Significado
.php3
.php4
.phtml
// cdigo;
// cdigo;
// cdigo;
?>
1.2.3 Comentrios
Para comentar uma nica linha:
// echo "a";
# echo "a";
echo "b"; */
23
echo
um comando que imprime uma ou mais variveis no console. Exemplo:
echo 'a', 'b', 'c';
Resultado:
abc
print
uma funo que imprime uma string no console. Exemplo:
print('abc');
Resultado:
abc
var_dump
Imprime o contedo de uma varivel de forma explanativa, muito comum para se
realizar debug. Se o parmetro for um objeto, ele imprimir todos os seus atributos;
se for um array de vrias dimenses, imprimir todas elas, com seus respectivos
contedos e tipos de dados. Exemplo:
$vetor = array('Palio', 'Gol', 'Fiesta', 'Corsa');
var_dump($vetor);
Resultado:
array(4) {
[0]=>
[1]=>
string(5) "Palio"
string(3) "Gol"
[2]=>
string(6) "Fiesta"
[3]=>
string(5) "Corsa"
print_r
Imprime o contedo de uma varivel de forma explanativa, assim como a var_dump(),
mas em um formato mais legvel para o programador, com os contedos alinhados
e suprimindo os tipos de dados. Exemplo:
$vetor = array('Palio', 'Gol', 'Fiesta', 'Corsa');
print_r($vetor);
24
Resultado:
Array
(
1.3 Variveis
Variveis so identificadores utilizados para representar valores mutveis e volteis,
que s existem durante a execuo do programa. Elas so armazenadas na memria
RAM e seu contedo destrudo aps a execuo do programa. Para criar uma varivel em PHP, precisamos atribuir-lhe um nome de identificao, sempre precedido
pelo caractere cifro ($). Veja os exemplos a seguir:
<?php
$nome = "Joo";
Resultado:
da Silva, Joo
Algumas dicas:
<?php
$codigoCliente
25
// exemplo de varivel
// resultado = maria
Quando uma varivel atribuda a outra, sempre criada uma nova rea de
armazenamento na memria. Veja neste exemplo que, apesar de $b receber o mesmo
contedo de $a, aps qualquer modificao em $b, $a continua com o mesmo valor.
<?php
$a = 5;
$b = $a;
$b = 10;
Para criar referncia entre variveis, ou seja, duas variveis apontando para a
mesma regio da memria, a atribuio deve ser precedida pelo operador &. Assim,
qualquer alterao em qualquer uma das variveis reflete na outra.
<?php
$a = 5;
$b = &$a;
26
?>
Resultado:
Jos da Silva
No programa que segue, criamos uma varivel numrica contendo o valor 91. Em
seguida, testamos se a varivel maior que 90. Tal comparao tambm retorna um
valor booleano (TRUE ou FALSE). O contedo da varivel $vai_chover um boolean que
ser testado logo em seguida para a impresso da string Est chovendo.
<?php
?>
27
Resultado:
Est chovendo
Inteiro 0
Um array vazio
Tipo NULL
// nmero decimal
$a = 1234;
// um nmero negativo
$a = -123;
// ponto flutuante
$a = 1.234;
// notao cientfica
$a = 4e23;
?>
28
// resultado = 'Corsa'
class Computador
{
var $cpu;
function ligar()
Resultado:
Ligando computador a 500Mhz...
29
"integer"
"double"
"string"
"array"
"object"
"resource"
"NULL"
1.4 Constantes
Uma constante um valor que no sofre modificaes durante a execuo do programa. Ela representada por um identificador, assim como as variveis, com a exceo
de que s pode conter valores escalares (boolean, inteiro, ponto flutuante e string). Um
valor escalar no pode ser composto de outros valores, como vetores ou objetos. As
regras de nomenclatura de constantes seguem as mesmas regras das variveis, com a
exceo de que as constantes no so precedidas pelo sinal de cifro ($) e geralmente
utilizam-se nomes em maisculo.
MAXIMO_CLIENTES // exemplo de constante
30
Voc pode definir uma constante utilizando a funo define(). Quando uma constante definida, ela no pode mais ser modificada ou anulada. Exemplo:
<?php
define("MAXIMO_CLIENTES", 100);
echo MAXIMO_CLIENTES;
?>
Resultado:
100
1.5 Operadores
1.5.1 Atribuio
Um operador de atribuio utilizado para definir uma varivel atribuindo-lhe um
valor. O operador bsico de atribuio =.
<?php
$var += 5;
// Soma 5 em $var;
$var *=5;
$var -= 5;
$var /= 5;
?>
// Subtrai 5 em $var;
// Divide $var por 5;
Operadores
Descrio
++$a
$a++
--$a
$a--
1.5.2 Aritmticos
Operadores aritmticos so utilizados para realizao de clculos matemticos.
Operadores
Descrio
Adio.
Subtrao.
Multiplicao.
Diviso.
Mdulo (resto da diviso).
-
*
/
%
31
Em clculos complexos, procure utilizar parnteses, sempre observando as prioridades aritmticas. Por exemplo:
<?php
$a = 2;
$b = 4;
echo $a+3*4+5*$b;
echo ($a+3)*4+(5*$b);
?>
// resultado = 34
// resultado = 40
// soma + 5
echo $a + 5;
?>
Resultado:
15
1.5.3 Relacionais
Operadores relacionais so utilizados para realizar comparaes entre valores ou
expresses, resultando sempre um valor boolean (TRUE ou FALSE).
Comparadores
Descrio
==
===
!= ou <>
<
>
<=
>=
Veja a seguir alguns testes lgicos e seus respectivos resultados. No primeiro caso,
vemos a utilizao errada do operador de atribuio = para realizar uma comparao: o operador sempre retorna o valor atribudo.
<?php
if ($a = 5)
{
}
?>
32
Resultado:
essa operao atribui 5 varivel $a e retorna verdadeiro
No exemplo que segue, declaramos duas variveis, uma integer e outra string.
Neste caso, vemos a utilizao dos operadores de comparao == e !=.
<?php
$a = 1234;
$b = '1234';
if ($a == $b)
{
}
?>
Resultado:
$a e $b so iguais
$c = 1234;
$d = '1234';
if ($c === $d)
{
}
?>
Resultado:
$c e $d so de tipos diferentes
O PHP considera o valor zero como sendo falso em comparaes lgicas. Para
evitar erros semnticos em retorno de valores calculados por funes que podem
33
$e = 0;
// zero sempre igual FALSE
if ($e == FALSE)
{
}
?>
Resultado:
$e falso
$e zero mesmo
1.5.4 Lgicos
Operadores lgicos so utilizados para combinar expresses lgicas entre si, agrupando testes condicionais.
Operador
Descrio
($a xor $b) XOR: Verdadeiro (TRUE) se $a ou $b forem verdadeiros, de forma exclu(! $a)
siva.
NOT: Verdadeiro (TRUE) se $a for FALSE.
E: Verdadeiro (TRUE) se tanto $a quanto $b forem verdadeiros.
OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros.
34
$vai_chover = TRUE;
$esta_frio = TRUE;
if ($vai_chover and $esta_frio)
{
}
?>
Resultado:
No vou sair de casa
J neste outro programa, caso uma varivel seja TRUE e a outra seja FALSE (OU exclusivo), ser impresso no console Vou pensar duas vezes antes de sair.
<?php
$vai_chover = FALSE;
$esta_frio = TRUE;
?>
Resultado:
Vou pensar duas vezes antes de sair
35
ELSE utilizado para indicar um novo bloco de comandos delimitado por { }, caso
a condio do IF no seja satisfeita. Pode ser lido como caso contrrio. A utilizao
do ELSE opcional.
else
{
Exemplo:
<?php
$a = 1;
if ($a==5)
{
}
else
{
}
?>
Resultado:
no igual
Quando no explicitamos o operador lgico em testes por meio do IF, o comportamento-padro do PHP retornar TRUE sempre que a varivel tiver contedo vlido.
36
$a = 'contedo';
if ($a)
{
}
if ($b)
{
}
?>
Resultado:
$a tem contedo
$salario
$tempo_servico
= 1020;
= 12;
$tem_reclamacoes = false;
if ($salario > 1000)
{
// boleano
if ($tem_reclamacoes != true)
{
// meses
// R$
if (($salario > 1000) and ($tempo_servico >= 12) and ($tem_reclamacoes != true))
{
}
?>
Resultado:
parabns, voc foi promovido
O PHP nos oferece facilidades quando desejamos realizar tarefas simples como
realizar uma atribuio condicional a uma varivel. A seguir, voc confere um cdigo
tradicional que verifica o estado de uma varivel antes de atribuir o resultado.
37
else
{
}
O mesmo cdigo poderia ser escrito em uma nica linha da seguinte forma:
$resultado = ($valor_venda > 100) ? 'muito caro' : 'pode comprar';
1.6.2 WHILE
O WHILE uma estrutura de controle similar ao IF. Da mesma forma, possui uma condio
para executar um bloco de comandos. A diferena primordial que o WHILE estabelece
um lao de repetio, ou seja, o bloco de comandos ser executado repetitivamente
enquanto a condio de entrada dada pela expresso for verdadeira. Este comando
pode ser interpretado como ENQUANTO (expresso) FAA {comandos... }..
A Figura 1.3 procura explicar o fluxo de funcionamento do comando WHILE. Quando
a expresso avaliada como TRUE, o programa parte para a execuo de um bloco de
comandos. Quando do fim da execuo deste bloco de comandos, o programa retorna ao ponto inicial da avaliao e, se a expresso continuar verdadeira, o programa
continua tambm com a execuo do bloco de comandos, constituindo um lao de
repeties, o qual s interrompido quando a expresso avaliada retornar um valor
falso (FALSE).
38
comandos;
$a = 1;
print $a;
$a ++;
?>
Resultado:
1234
1.6.3 FOR
O FOR uma estrutura de controle que estabelece um lao de repetio baseado em
um contador; muito similar ao comando WHILE. O FOR controlado por um bloco de
trs comandos que estabelecem uma contagem, ou seja, o bloco de comandos ser
executado um certo nmero de vezes.
for (expr1; expr2; expr3)
{
comandos
Parmetros
Descrio
expr1
expr2
expr3
39
Exemplo:
<?php
print $i;
?>
Resultado:
12345678910
Procure utilizar nomes sugestivos para variveis, mas, em alguns casos especficos,
como em contadores, permita-se utilizar variveis de apenas uma letra, como no
exemplo a seguir:
<?php
// comandos...
?>
Evite laos de repetio com muitos nveis de iterao. Como o prprio Linus
Torvalds j disse certa vez, se voc est utilizando trs nveis encadeados ou mais,
considere a possibilidade de revisar a lgica de seu programa.
1.6.4 SWITCH
O comando switch uma estrutura que simula uma bateria de testes sobre uma varivel. similar a uma srie de comandos IF sobre a mesma expresso. Freqentemente,
necessrio comparar a mesma varivel com valores diferentes e executar uma ao
especfica em cada um destes casos.
No fluxograma a seguir vemos que, para cada teste condicional (CASE), existe um bloco
de comandos a ser executado caso a expresso avaliada retorne verdadeiro (TRUE). Caso
a expresso retorne falso (FALSE), o switch parte para a prxima expresso a ser avaliada,
at que no tenha mais expresses para avaliar. Caso todas as expresses sejam falsas,
o switch executar o bloco de cdigos representado pelo identificador default.
40
Sintaxe do comando:
switch ($expresso)
{
// comandos
break;
break;
// comandos
// comandos
break;
default:
// comandos
Os exemplos seguintes representam duas formas diferentes de se atingir o mesmo resultado. Primeiro, por meio de uma srie de comandos IF e, logo em seguida,
utilizando a estrutura switch.
Observao: se voc tem um switch dentro de um loop e deseja continuar para a
prxima iterao do lao de repetio, utilize o comando continue 2, que escapar
dois nveis acima.
<?php
$i = 1;
if ($i == 0)
41
elseif ($i == 1)
{
}
elseif ($i == 2)
{
}
else
{
}
?>
Resultado:
i igual a 1
O switch executa linha por linha at encontrar a ocorrncia de break. Por isso a
importncia do comando break para evitar que os blocos de comando seguintes
sejam executados por engano. A clusula default ser executada caso nenhuma das
expresses anteriores tenha sido verificada.
<?php
$i = 1;
switch ($i)
{
case 0:
break;
default:
case 2:
break;
case 1:
?>
Resultado:
i igual a 1
42
1.6.5 FOREACH
O foreach um lao de repetio para iteraes em arrays ou matrizes. um FOR
simplificado que decompe um vetor ou matriz em cada um de seus elementos por
meio de sua clusula AS.
foreach (expresso_array as $valor)
{
instrues
Exemplo:
<?php
?>
Resultado:
ma laranja pra banana
1.6.6 CONTINUE
A instruo continue, quando executada em um bloco de comandos FOR/WHILE, ignora
as instrues restantes at o fechamento em }. Dessa forma, o programa segue para
a prxima verificao da condio de entrada do lao de repetio.
1.6.7 BREAK
O comando break aborta a execuo de blocos de comandos, como o IF, WHILE, FOR.
Quando estamos em uma execuo com muitos nveis de iterao e desejamos abortar
n nveis, a sintaxe a seguinte:
While...
For...
43
include <arquivo>
A instruo include() inclui e avalia o arquivo informado. Seu cdigo (variveis,
objetos e arrays) entra no escopo do programa, tornando-se disponvel a partir da
linha em que a incluso ocorre. Se o arquivo no existir, produzir uma mensagem
de advertncia (warning).
Exemplo:
biblioteca.php
<?php
/*
* funo quadrado
function quadrado($numero)
{
}
?>
teste.php
<?php
Resultado:
16
require <arquivo>
Idntico ao include. Difere somente na manipulao de erros. Enquanto o include
produz uma warning, o require produz uma mensagem de Fatal Error caso o
arquivo no exista.
44
include_once <arquivo>
Funciona da mesma maneira que o comando include, a no ser que o arquivo
informado j tenha sido includo, no refazendo a operao (o arquivo includo
apenas uma vez). Este comando til em casos em que o programa pode passar
mais de uma vez pela mesma instruo. Assim, evitar sobreposies, redeclaraes etc.
require_once <arquivo>
Funciona da mesma maneira que o comando require, a no ser que o arquivo
informado j tenha sido includo, no refazendo a operao (o arquivo includo
apenas uma vez). Este comando til em casos em que o programa pode passar
mais de uma vez pela mesma instruo. Assim, poder-se evitar sobreposies,
redeclaraes etc.
1.8.1 Criao
Para declarar uma funo em PHP, utiliza-se o operador function seguido do nome
que desejamos lhe atribuir, sem espaos em branco e iniciando obrigatoriamente
com uma letra. Na mesma linha, digitamos a lista de argumentos (parmetros) que
a funo ir receber, separados por vrgula. Em seguida, encapsulado por chaves {},
vem o cdigo da funo. No final, utiliza-se a clusula return para retornar o resultado
da funo (integer, string, array, objeto etc.).
<?php
// exemplo de funo
?>
45
<?php
Resultado:
20.45288531775
$total = 0;
function km2mi($quilometros)
{
global $total;
$total += $quilometros;
Resultado:
percorreu 60 milhas
46
function percorre($quilometros)
{
static $total;
$total += $quilometros;
percorre(100);
percorre(200);
percorre(50);
?>
Resultado:
percorreu mais 100 do total de 100
$variavel += $valor;
$a = 10;
Incrementa($a, 20);
echo $a;
?>
Resultado:
10
47
$variavel += $valor;
$a = 10;
Incrementa($a, 20);
echo $a;
?>
Resultado:
30
$variavel += $valor;
$a = 10;
Incrementa($a);
echo $a;
?>
Resultado:
50
O PHP tambm permite definir uma funo com o nmero de argumentos variveis, ou seja, permite obt-los de forma dinmica, mesmo sem saber quais so ou
quantos so. Para obter quais so, utilizamos a funo func_get_args(); para obter a
quantidade de argumentos, utilizamos a funo func_num_args().
<?php
function Ola()
{
$argumentos = func_get_args();
$quantidade = func_num_args();
48
Resultado:
Ol Joo
Ol Maria
Ol Jos
Ol Pedro
1.8.5 Recurso
O PHP permite chamada de funes recursivamente. No caso a seguir criaremos uma
funo para calcular o fatorial de um nmero.
<?php
function Fatorial($numero)
{
if ($numero == 1)
else
return $numero;
Resultado:
120
5040
fopen
Abre um arquivo e retorna um identificador. Se o nome do arquivo est na forma
protocolo://..., o PHP ir procurar por um manipulador de protocolo, tambm
conhecido como wrapper, conforme o prefixo.
int fopen (string arquivo, string modo [,int usar_path [, resource contexto]])
Parmetros
Descrio
arquivo
modo
usar_path
contexto
49
Exemplo:
<?php
feof
Testa se um determinado identificador de arquivo (criado pela funo fopen())
est no fim de arquivo (End Of File). Retorna TRUE se o ponteiro estiver no fim do
arquivo (EOF); do contrrio, retorna FALSE.
int feof (int identificador)
Parmetro
Descrio
identificador
fgets
L uma linha de um arquivo. Retorna uma string com at (tamanho 1) bytes
lidos do arquivo apontado pelo identificador de arquivo. Se nenhum tamanho for
informado, o default 1Kb ou 1024 bytes. Se um erro ocorrer, retorna FALSE.
string fgets (int identificador [, int tamanho])
Parmetros
Descrio
identificador
tamanho
Exemplo:
<?php
// imprime a linha.
echo $buffer;
fclose ($fd);
?>
50
Resultado:
/dev/hda2
swap
swap
/dev/hda1
/windows
ntfs
/dev/hda3
/dev/cdrom
/dev/fd0
devpts
proc
/
/mnt/cdrom
/mnt/floppy
/dev/pts
/proc
defaults
0 0
ext3
defaults
1 1
iso9660
noauto,owner,ro
0 0
auto
devpts
proc
defaults
noauto,owner
gid=5,mode=620
defaults
1 0
0 0
0 0
0 0
fwrite
Grava uma string (contedo) no arquivo apontado pelo identificador de arquivo.
Se o argumento comprimento dado, a gravao ir parar depois que comprimento
bytes for escrito ou o fim da string contedo for alcanado, o que ocorrer primeiro.
Retorna o nmero de bytes gravados, ou FALSE em caso de erro.
int fwrite (int identificador, string contedo [, int comprimento])
Parmetros
Descrio
identificador
contedo
comprimento
Exemplo:
<?php
// abre o arquivo
fclose
Fecha o arquivo aberto apontado pelo identificador de arquivo. Retorna TRUE em
caso de sucesso ou FALSE em caso de falha.
bool fclose (int identificador)
Parmetro
Descrio
identificador
51
file_put_contents
Grava uma string em um arquivo. Retorna a quantidade de bytes gravados.
int file_put_contents (string nome_arquivo, mixed contedo)
Parmetros
Descrio
nome_arquivo
contedo
Exemplo:
<?php
file_get_contents
L o contedo de um arquivo e retorna o contedo em forma de string.
string file_get_contents (string nome_arquivo, ...)
Exemplo:
<?php
echo file_get_contents('/etc/mtab');
?>
Resultado:
/dev/hda3 / ext3 rw 0 0
file
L um arquivo e retorna um array com todo o seu contedo, de modo que cada
posio do array representa uma linha lida do arquivo. O nome do arquivo pode
conter o protocolo, como no caso http://www.servidor.com.br/pagina.html. Assim, o arquivo
remoto ser lido para dentro do array.
array file (string nome_arquivo, [int usar_include_path])
Parmetros
Descrio
nome_arquivo
Arquivo a ser lido.
usar_include_path Se 1, procura tambm nos diretrios da constante PHP_INCLUDE_
PATH.
52
Exemplo:
<?php
Resultado:
linha 1
linha 2
linha 3
copy
Copia um arquivo para outro local/nome. Retorna
FALSE em caso de falhas.
bool copy (string arquivo_origem, string arquivo_destino)
Parmetros
Descrio
arquivo_origem
arquivo_destino
Exemplo:
<?php
$origem = "/home/pablo/file.txt";
$destino = "/home/pablo/file2.txt";
if (copy($origem, $destino))
{
}
else
{
}
?>
Resultado:
Cpia efetuada
TRUE
53
rename
Altera a nomenclatura de um arquivo ou diretrio.
bool rename (string arquivo_origem, string arquivo_destino)
Parmetros
Descrio
arquivo_origem
arquivo_destino
Exemplo:
<?php
$origem = "/home/pablo/file2.txt";
$destino = "/tmp/file3.txt";
if (rename($origem, $destino))
{
}
else
{
}
?>
Resultado:
Renomeao efetuada
unlink
Apaga um arquivo passado como parmetro. Retorna TRUE em caso de sucesso e
FALSE em caso de falhas.
bool unlink (string nome_arquivo)
Exemplo:
<?php
$arquivo = "/tmp/file3.txt";
if (unlink($arquivo))
{
}
else
{
}
?>
54
Resultado:
Arquivo apagado
file_exists
Verifica a existncia de um arquivo ou de um diretrio.
bool file_exists (string nome_arquivo)
Parmetros
Descrio
nome_arquivo
Exemplo:
<?php
$arquivo
= '/home/pablo/file2.txt';
if (file_exists($arquivo))
{
}
else
{
}
?>
Resultado:
Arquivo no existente
is_file
Verifica se a localizao dada corresponde ou no a um arquivo.
bool is_file (string localizao)
Parmetros
Descrio
Exemplo:
<?php
$arquivo = '/home/pablo/file.txt';
if (is_file($arquivo))
{
}
else
{
?>
Resultado:
/home/pablo/file.txt um arquivo
mkdir
Cria um diretrio.
bool mkdir (string localizao, [int modo])
Parmetros
Descrio
Exemplo:
<?php
$dir = '/tmp/diretorio';
if (mkdir($dir, 0777))
{
}
else
{
}
?>
Resultado:
/tmp/diretorio criado com sucesso
getcwd
Retorna o diretrio corrente.
string getcwd ()
Exemplo:
<?php
Resultado:
o diretrio atual /tmp
55
56
chdir
Altera o diretrio corrente. Retorna
falhas.
TRUE
em caso de sucesso e
Parmetros
Descrio
Exemplo:
<?php
Resultado:
o diretrio atual /tmp
rmdir
Apaga um diretrio.
bool rmdir (string localizao)
Parmetros
Descrio
Exemplo:
<?php
$dir = '/tmp/diretorio';
if (rmdir($dir))
{
}
else
{
}
?>
Resultado:
/tmp/diretorio apagado com sucesso
FALSE
em caso de
57
opendir
Abre um diretrio e retorna um identificador.
resource opendir (string nome_diretorio)
Parmetros
Descrio
nome_arquivo
closedir
Libera um recurso alocado pela funo opendir().
void closedir (resource identificador)
Parmetros
Descrio
identificador
readdir
Realiza a leitura do contedo de um diretrio por meio do identificador criado
pela funo opendir().
string readdir (resource identificador)
Parmetros
Descrio
identificador
Exemplo:
<?php
// verifica se diretrio.
if (is_dir($diretorio))
{
$ident = opendir($diretorio);
closedir($ident);
?>
Resultado:
.
..
58
boot
home
A diferena que todo contedo contido dentro de aspas duplas avaliado pelo PHP.
Assim, se a string contm uma varivel, esta varivel ser traduzida pelo seu valor.
<?php
$fruta = 'ma';
Tambm podemos declarar uma string literal com muitas linhas observando a
sintaxe a seguir, na qual escolhemos uma palavra-chave (neste caso, escolhemos CHAVE)
para delimitar o incio e o fim da string.
<?php
$texto = <<<CHAVE
Aqui nesta rea
echo $texto;
?>
Resultado:
Aqui nesta rea
59
1.10.2 Concatenao
Para concatenar strings, pode-se utilizar o operador .ou colocar mltiplas variveis
dentro de strings duplas , uma vez que seu contedo interpretado.
<?php
$fruta = 'ma';
// primeira forma
$a = 1234;
echo 'O salrio ' . $a . "\n";
echo "O salrio $a \n";
?>
Resultado:
O salrio 1234
O salrio 1234
Caractere Descrio
\n
\r
\t
\\
\
\$
60
Exemplo:
<?php
Observao: utilize aspas duplas para declarar strings somente quando for
necessrio avaliar seu contedo, evitando, assim, tempo de processamento
desnecessrio.
1.10.4 Funes
As funes a seguir formam um grupo cuja caracterstica comum a manipulao
de cadeias de caracteres (strings), como converses, transformaes, entre outras
funcionalidades.
strtoupper
Transforma uma string (contedo) para maisculo. Retorna a string com todos
os caracteres alfabticos convertidos para maisculo.
string strtoupper (string contedo)
Exemplo:
<?php
Resultado:
CONVERTENDO PARA MAISCULO
strtolower
Transforma uma string (contedo) para minsculo. Retorna a string com todos os
caracteres alfabticos convertidos para minsculo.
string strtolower (string contedo)
Parmetros
Descrio
contedo
61
Exemplo:
<?php
Resultado:
convertendo para minsculo
substr
Retorna parte de uma string (contedo). Retorna uma poro de contedo, comeando em incio, contendo comprimento caracteres. Se comprimento for negativo,
conta n caracteres antes do final.
string substr (string contedo, int incio [, int comprimento])
Parmetros
Descrio
contedo
incio
comprimento
Exemplo:
<?php
Resultado:
mrica
mr
Amric
ca
strpad
Preenche uma string com uma outra string, dentro de um tamanho especfico.
string str_pad ( string entrada, int tamanho [, string complemento [, int tipo]])
62
Parmetros
Descrio
entrada
tamanho
complemento
tipo
Exemplo:
<?php
Resultado:
The Beatles
*********The Beatles
****The Beatles*****
The Beatles*********
str_repeat
Repete uma string uma certa quantidade de vezes.
string str_repeat ( string entrada, int quantidade)
Parmetros
Descrio
entrada
String inicial a ser repetida.
quantidade Quantidade de repeties.
Exemplo:
<?php
$txt = ".oO0Oo.";
Resultado:
.oO0Oo..oO0Oo..oO0Oo..oO0Oo..oO0Oo.
strlen
Retorna o comprimento de uma string.
Parmetros
Descrio
entrada
Exemplo:
<?php
Resultado:
O comprimento : 34
str_replace
Substitui uma string por outra em um dado contexto.
mixed str_replace ( mixed procura, mixed substitui, mixed contexto)
Parmetros
Descrio
procura
substitui
contexto
Exemplo:
<?php
Resultado:
O Leo roeu a roupa do rei de Roma
strpos
Encontra a primeira ocorrncia de uma string dentro de outra.
int strpos (string principal, string procurada [, int offset])
Parmetros
Descrio
principal
procurada
offset
String qualquer.
String a ser procurada dentro da string principal.
Quantidade de caracteres a ser ignorada.
63
64
No exemplo a seguir, a funo strpos() vasculha a varivel $minha_string para encontrar em qualquer posio dentro dela a varivel $encontrar:
<?php
else
{
}
?>
Resultado:
String encontrada na posio 14
65
$nomes[] = 'maria';
$nomes[] = 'joo';
$nomes[] = 'carlos';
$nomes[] = 'jos';
De qualquer forma, para acessar o array indexado, basta indicar o seu ndice entre
colchetes:
echo $cores[0];
// resultado = vermelho
echo $cores[1];
// resultado = azul
echo $cores[3];
// resultado = amarelo
echo $cores[2];
// resultado = verde
echo $nomes[0];
// resultado = maria
echo $nomes[2];
// resultado = carlos
echo $nomes[1];
echo $nomes[3];
// resultado = joo
// resultado = jos
= 'Maria da Silva';
= 'So Joo';
De qualquer forma, para acessar o array, basta indicar a sua chave entre colchetes:
echo $cores['vermelho']; // resultado = FF0000
echo $cores['azul'];
// resultado = 0000FF
echo $pessoa['nome'];
echo $cores['verde'];
echo $pessoa['rua'];
// resultado = 00FF00
// resultado = So Joo
Observao: a chave pode ser string ou integer no negativo; o valor pode ser
de qualquer tipo.
66
1.11.3 Iteraes
Os arrays podem ser iterados no PHP pelo operador FOREACH, percorrendo cada uma
das posies do array. Exemplo:
$frutas['cor']
$frutas['sabor']
= 'vermelha';
= 'doce';
$frutas['formato'] = 'redonda';
$frutas['nome']
= 'ma';
Resultado:
cor => vermelha
sabor => doce
1.11.4 Acesso
As posies de um array podem ser acessadas a qualquer momento, e sobre elas
operaes podem ser realizadas.
<?php
$minha_multa['carro'] = 'Plio';
$minha_multa['valor'] = 178.00;
// alterao de valores
// exibe o array
var_dump($minha_multa);
$comidas[] = 'Lazanha';
$comidas[] = 'Pizza';
$comidas[] = 'Macarro';
// alterao de valores
// exibe o array
var_dump($comidas);
?>
67
Resultado:
array(2) {
["carro"]=>
["valor"]=>
array(3) {
[0]=>
[1]=>
string(7) "Lazanha"
string(15) "Pizza Calabreza"
[2]=>
string(8) "Macarro"
'potncia'=>'1.0',
'opcionais'=>'Ar Cond.'),
'potncia'=>'1.3',
'Gol'
);
'opcionais'=>'MP3'),
=> array('cor'=>'branco',
echo $carros['Palio']['opcionais'];
?>
// resultado = Ar Cond.
$carros['Palio']['cor']
= 'azul';
$carros['Palio']['potncia'] = '1.0';
= 'cinza';
68
= 'branco';
$carros['Gol']['opcionais']
= 'Metalica';
$carros['Gol']['potncia']
= '1.0';
?>
Resultado:
=> modelo Palio
1.11.6 Funes
A seguir veremos uma srie de funes utilizadas exclusivamente para manipulao
de arrays, funes de ordenao, interseco, acesso, dentre outras.
69
array_push
Adiciona elementos ao final de um array. Tem o mesmo efeito de utilizar a sintaxe
$array[] = $valor.
int array_push (array nome_array, mixed valor [, mixed ...])
Parmetros
Descrio
Exemplo:
<?php
Resultado:
array(4) {
array_pop
Remove um valor do final de um array.
mixed array_pop (array nome_array)
Exemplo:
<?php
Resultado:
array(3) {
70
array_shift
Remove um elemento do incio de um array.
mixed array_shift (array nome_array)
Exemplo:
<?php
Resultado:
array(3) {
array_unshift
Adiciona um elemento no incio de um array.
int array_unshift (array nome_array, mixed valor [, mixed ...])
Parmetros
Descrio
Exemplo:
<?php
Resultado:
array(4) {
array_pad
Preenche um array com um dado valor, determinada quantidade de posies.
array array_pad (array nome_array, int tamanho, mixed valor)
Parmetros
Descrio
Exemplo:
<?php
Resultado:
array(6) {
array_reverse
Recebe um array e retorna-o na ordem inversa.
array array_reverse (array nome_array, boolean preservar_chaves)
Parmetros
Descrio
nome_array
preservar_chaves
Exemplo:
<?php
$a[0] = 'green';
$a[1] = 'yellow';
$a[2] = 'red';
$a[3] = 'blue';
$b = array_reverse($a, true);
var_dump($b);
?>
71
72
Resultado:
array(4) {
array_merge
Mescla dois ou mais arrays. Um array adicionado ao final do outro. O resultado
um novo array. Se ambos arrays tiverem contedo indexado pela mesma chave,
o segundo ir se sobrepor ao primeiro.
array array_merge (array nome_array1, array nome_array2 [, array ...])
Parmetros
Descrio
nome_array1
nome_array2
...
Exemplo:
<?php
$a = array("verde", "azul");
$b = array("vermelho", "amarelo");
$c = array_merge($a, $b);
var_dump($c);
?>
Resultado:
array(4) {
array_keys
Retorna as chaves (ndices) de um array. Se o segundo parmetro for indicado, a
funo retornar apenas ndices que apontam para um contedo igual ao parmetro.
Parmetros
73
Descrio
nome_array
Array cujos ndices desejamos descobrir.
valor_procurado Parmetro opcional. Se preenchido, retornar apenas ndices contendo este valor.
Exemplo:
<?php
Resultado:
Array
(
array_values
Retorna um array contendo os valores de outro array.
array array_values (array nome_array)
Parmetros
Descrio
nome_array
Exemplo:
<?php
Resultado:
Array
(
[1] => 5
74
array_slice
Extrai uma poro de um array.
array array_slice (array nome_array, int incio, int tamanho)
Parmetros
Descrio
Exemplo:
<?php
$a[0] = 'green';
$a[1] = 'yellow';
$a[2] = 'red';
$a[3] = 'blue';
$a[4] = 'gray';
$a[5] = 'white';
$b = array_slice($a, 2, 3);
print_r($b);
?>
Resultado:
Array
(
count
Retorna a quantidade de elementos de um array.
int count (array nome_array)
Exemplo:
<?php
Resultado:
o array $a contm 4 posies
array_in
Verifica se um array contm um determinado valor.
boolean array_in (mixed valor, array nome_array)
Parmetro
Descrio
valor
Valor a ser procurado.
nome_array Array a ser vasculhado.
Exemplo:
<?php
?>
Resultado:
suco natural encontrado
sort
Ordena um array pelo seu valor, no mantendo a associao de ndices.
boolean sort (array nome_array)
Exemplo:
<?php
print_r($a);
?>
Resultado:
Array
(
75
76
rsort
Ordena um array em ordem reversa pelo seu valor, no mantendo a associao
de ndices.
boolean rsort (array nome_array)
Exemplo:
<?php
print_r($a);
?>
Resultado:
Array
(
asort
Ordena um array pelo seu valor, mantendo a associao de ndices. Para ordenar
de forma reversa, use arsort().
void asort (array nome_array)
Exemplo:
<?php
$a[0] = 'green';
$a[1] = 'yellow';
$a[2] = 'red';
$a[3] = 'blue';
$a[4] = 'gray';
$a[5] = 'white';
asort($a);
print_r($a);
?>
Resultado:
Array
(
77
ksort
Ordena um array pelos seus ndices. Para ordem reversa, utilize krsort().
boolean ksort (array nome_array)
Exemplo:
<?php
$carro['potncia'] = '1.0';
$carro['cor']
= 'branco';
$carro['modelo']
= 'celta';
print_r($carro);
?>
Resultado:
Array
(
explode
Converte uma string em um array, separando os elementos por meio de um separador.
array explode (string separador, string padro)
Parmetros
Descrio
separador
padro
78
Exemplo:
<?php
$string = "31/12/2004";
var_dump(explode("/", $string));
?>
Resultado:
array(3) {
[0]=>
[1]=>
string(2) "31"
string(2) "12"
[2]=>
string(4) "2004"
implode
Converte um array em uma string, separando os elementos do array por meio
de um separador.
array implode (string separador, array padro)
Parmetros
Descrio
separador
padro
Exemplo:
<?php
Resultado:
string(20) "Maria + Paulo + Jos"
79
get_class_methods
Retorna um vetor com os nomes dos mtodos de uma determinada classe.
array get_class_methods (string nome_classe)
Exemplo:
<?php
class Funcionario
{
function SetSalario()
function GetSalario()
{
}
function SetNome()
{
}
function GetNome()
{
}
print_r(get_class_methods('Funcionario'));
?>
Resultado:
Array
(
get_class_vars
Retorna um vetor com os nomes das propriedades e contedos de uma determinada
classe. Note que so valores estticos definidos na criao da classe.
array get_class_vars (string nome_classe)
80
Exemplo:
<?php
class Funcionario
{
var $Codigo;
var $Nome;
function SetSalario()
function GetSalario()
{
}
print_r(get_class_vars('Funcionario'));
?>
Resultado:
Array
(
[Codigo] =>
[Nome] =>
get_object_vars
Retorna um vetor com os nomes e contedos das propriedades de um objeto. So
valores dinmicos que se alteram de acordo com o ciclo de vida do objeto.
array get_object_vars (object nome_objeto)
Exemplo:
<?php
class Funcionario
{
var $Codigo;
var $Nome;
function GetSalario()
$jose->Departamento = 'Financeiro';
print_r(get_object_vars($jose));
?>
Resultado:
Array
(
[Codigo] => 44
get_class
Retorna o nome da classe a qual um objeto pertence.
string get_class (object nome_objeto)
Exemplo:
<?php
class Funcionario
{
var $Codigo;
function SetSalario()
var $Nome;
{
function GetSalario()
{
}
81
82
Resultado:
Funcionario
get_parent_class
Retorna o nome da classe ancestral (classe-pai). Se o parmetro for um objeto,
retorna o nome da classe ancestral da classe qual o objeto pertence. Se o parmetro for uma string, retorna o nome da classe ancestral da classe passada como
parmetro.
string get_parent_class (mixed objeto)
Parmetros
Descrio
objeto
Exemplo:
<?php
class Funcionario
{
}
var $Codigo;
var $Nome;
var $Salario;
var $Bolsa;
// quebra de linha
echo get_parent_class('estagiario');
?>
Resultado:
Funcionario
Funcionario
is_subclass_of
Indica se um determinado objeto ou classe derivado de uma determinada
classe.
boolean is_subclass_of (mixed objeto, string classe)
Parmetros
Descrio
objeto
classe
83
Exemplo:
<?php
class Funcionario
{
}
var $Codigo;
var $Nome;
var $Salario;
var $Bolsa;
echo "\n";
// quebra de linha
if (is_subclass_of('Estagiario', 'Funcionario'))
{
}
?>
Resultado:
Classe do objeto Jose derivada de Funcionario
Classe Estagiario derivada de Funcionario
method_exists
Verifica se um determinado objeto possui o mtodo descrito. Podemos verificar a
existncia de um mtodo antes de executar por engano um mtodo inexistente.
Parmetros
Descrio
objeto
mtodo
Objeto qualquer.
Nome de um mtodo do objeto.
84
Exemplo:
<?php
class Funcionario
{
var $Codigo;
function GetSalario()
var $Nome;
function SetSalario()
if (method_exists($jose, 'SetSalario'))
{
}
?>
Resultado:
Objeto Jose possui mtodo SetSalario()
call_user_func
Executa uma funo ou um mtodo de uma classe passado como parmetro. Para
executar uma funo, basta passar seu nome como uma string, e, para executar
um mtodo de um objeto, basta passar o parmetro como um array contendo na
posio 0 o objeto e na posio 1 o mtodo a ser executado. Para executar mtodos
estticos, basta passar o nome da classe em vez do objeto na posio 0 do array.
mixed call_user_func (callback funo [, mixed parmetro [, mixed ...]])
Parmetros
Descrio
funo
parmetro
Exemplo:
<?php
call_user_func('minhafuncao');
// declarao de classe
class MinhaClasse
{
function MeuMetodo()
{
call_user_func(array('MinhaClasse', 'MeuMetodo'));
// chamada de mtodo
call_user_func(array($obj, 'MeuMetodo'));
?>
Resultado:
minha funo!
Meu mtodo!
Meu mtodo!
85