Professional Documents
Culture Documents
Pablo DallOglio
Novatec
Captulo 1
Introduo ao PHP
A vida uma pea de teatro que no permite ensaios... Por isso, cante, ria, dance, chore e viva intensamente cada momento de sua vida, antes que a cortina se feche e a pea termine sem aplausos... Charles Chaplin
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 ocialmente 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 nal de 1998, o PHP j estava presente em cerca de 10% dos domnios da internet. Nessa poca o signicado da sigla PHP mudou para PHP: Hypertext Preprocessor, retratando assim a nova realidade de uma linguagem com propsitos mais amplos.
No inverno de 1998, aps o lanamento do PHP 3, Zeev e Andi comearam a trabalhar em uma reescrita do ncleo do PHP, tendo em vista melhorar sua performance e modularidade em aplicaes complexas. Para tanto, resolveram batizar este ncleo de Zend Engine, ou Mecanismo Zend (Zeev + Andi). O PHP 4, baseado neste mecanismo, foi lanado ocialmente em maio de 2000, trazendo muitas melhorias e recursos novos, como sees, suporte a diversos servidores web, alm da abstrao de sua API, permitindo inclusive ser utilizado como linguagem para shell script. Nesse momento, o PHP j estava presente em cerca de 20% dos domnios da internet, alm de ser utilizado por milhares de desenvolvedores ao redor do mundo. Apesar de todos os esforos, o PHP ainda necessitava maior suporte orientao a objetos, tal qual existe em linguagens como C++ e Java. Tais recursos esto nalmente presentes no PHP 5, aps um longo perodo de desenvolvimento que culminou com sua disponibilizao ocial em julho de 2004. Ao longo do livro veremos esses recursos empregados em exemplos prticos.
Fonte: PHP Group
22
Extenso
.php .class.php .inc.php
Signicado
Arquivo PHP contendo um programa. Arquivo PHP contendo uma classe. Arquivo PHP a ser includo, pode incluir constantes ou conguraes.
Extenso
.php3 .php4 .phtml
Signicado
Arquivo PHP contendo um programa PHP verso 3. Arquivo PHP contendo um programa PHP verso 4. Arquivo PHP contendo um programa PHP e HTML na mesma pgina.
1.2.3 Comentrios
Para comentar uma nica linha:
// echo "a"; # echo "a";
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]=> [2]=> [3]=> string(5) "Palio" string(3) "Gol" string(6) "Fiesta" 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 ( ) [0] => Palio [1] => Gol [2] => Fiesta [3] => Corsa
1.3 Variveis
Variveis so identicadores 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 identicao, sempre precedido pelo caractere cifro ($). Veja os exemplos a seguir:
<?php $nome = "Joo";
Resultado:
da Silva, Joo
Algumas dicas:
Nunca inicie a nomenclatura de variveis com nmeros. Nunca utilize espaos em branco no meio do identicador da varivel. Nunca utilize caracteres especiais (! @ # % ^ & * / | [ ] { }) na nomenclatura das variveis. Evite criar variveis com mais de 15 caracteres em virtude da clareza do cdigofonte. Nomes de variveis devem ser signicativos e transmitir a idia de seu contedo dentro do contexto no qual a varivel est inserida. Utilize preferencialmente palavras em minsculo (separadas pelo caractere _) ou somente as primeiras letras em maisculo quando da ocorrncia de mais palavras.
25
// exemplo de varivel
O PHP case sensitive, ou seja, sensvel a letras maisculas e minsculas. Tome cuidado ao declarar variveis e nomes de funo. Por exemplo, a varivel $codigo tratada de forma totalmente diferente da varivel $Codigo. Em alguns casos, precisamos ter em nosso cdigo-fonte nomes de variveis que podem mudar de acordo com determinada situao. Neste caso, no s o contedo da varivel mutvel, mas tambm seu nome. Para isso, o PHP implementa o conceito de variveis variantes (variable variables). Sempre que utilizarmos dois sinais de cifro ($) precedendo o nome de uma varivel, o PHP ir referenciar uma varivel representada pelo contedo da primeira. Neste exemplo, utilizamos esse recurso quando declaramos a varivel $nome (contedo de $variavel) contendo maria.
<?php // define o nome da varivel $variavel = 'nome';
// 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 modicao em $b, $a continua com o mesmo valor.
<?php $a = 5;
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 reete na outra.
<?php $a = 5;
$b = &$a;
26
$b = 10; echo $a; // resultado = 10 echo $b; // resultado = 10 ?>
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 // declara varivel numrica $umidade = 91;
// testa se maior que 90. Retorna um boolean $vai_chover = ($umidade > 90);
27
Resultado:
Est chovendo
Inteiro 0 Ponto utuante 0.0 Uma string vazia ou 0 Um array vazio Um objeto sem elementos Tipo NULL
28
// resultado = 'Corsa'
Resultado:
Ligando computador a 500Mhz...
29
"resource"
1.4 Constantes
Uma constante um valor que no sofre modicaes durante a execuo do programa. Ela representada por um identicador, assim como as variveis, com a exceo de que s pode conter valores escalares (boolean, inteiro, ponto utuante 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 denir uma constante utilizando a funo define(). Quando uma constante denida, ela no pode mais ser modicada 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 denir uma varivel atribuindo-lhe um valor. O operador bsico de atribuio =.
<?php $var += 5; $var -= 5; $var /= 5; ?> $var *=5; // Soma 5 em $var;
Operadores
++$a $a++ --$a $a--
Descrio
Pr-incremento. Incrementa $a em um e, ento, retorna $a. Ps-incremento. Retorna $a e, ento, incrementa $a em um. Pr-decremento. Decrementa $a em um e, ento, retorna $a. Ps-decremento. Retorna $a e, ento, decrementa $a em um.
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
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
== === != ou <> < >
Descrio
Igual. Resulta verdadeiro (TRUE) se expresses forem iguais. Idntico. Resulta verdadeiro (TRUE) se as expresses forem iguais e do mesmo tipo de dados. Diferente. Resulta verdadeiro se as variveis forem diferentes. Menor. Maior que. Menor ou igual. Maior ou igual.
<= >=
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) echo 'essa operao atribui 5 varivel $a e retorna verdadeiro';
32 Resultado:
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;
Resultado:
$a e $b so iguais
No prximo caso, alm da comparao entre as variveis, comparamos tambm os tipos de dados das variveis.
<?php $c = 1234;
$d = '1234'; if ($c === $d) { } { } ?> echo '$c e $d so iguais e do mesmo tipo';
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
retornar tanto um valor booleano quanto um inteiro, podemos utilizar as seguintes comparaes:
<? $e = 0; // zero sempre igual FALSE if ($e == FALSE) { }
// testa se $e igual a zero e do mesmo tipo que zero if ($e === 0) { } ?>
Resultado:
$e falso $e zero mesmo
1.5.4 Lgicos
Operadores lgicos so utilizados para combinar expresses lgicas entre si, agrupando testes condicionais.
Operador
($a or $b)
Descrio
OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros.
($a and $b) E: Verdadeiro (TRUE) se tanto $a quanto $b forem verdadeiros. ($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
No programa a seguir, se as variveis $vai_chover e $esta_frio forem verdadeiras ao mesmo tempo, ser impresso no console No vou sair de casa .
<?php $vai_chover = TRUE; $esta_frio = TRUE; if ($vai_chover and $esta_frio) { } ?> echo "No vou sair de casa";
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;
if ($vai_chover xor $esta_frio) { } ?> echo "Vou pensar duas vezes antes de sair";
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.
Veja a seguir um uxograma explicando o funcionamento do comando IF. Caso a avaliao da expresso seja verdadeira, o programa parte para execuo de um bloco de comandos; caso seja falsa, parte para a execuo do bloco de comandos dada pelo ELSE.
Exemplo:
<?php $a = 1; { } { } ?>
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
<?php $a = 'contedo'; if ($a) { } { } ?>
Resultado:
$a tem contedo
Para realizar testes encadeados, basta colocar um IF dentro do outro, ou mesmo utilizar o operador AND da seguinte forma:
<?php $salario = 1020; // R$
$tempo_servico
= 12;
// meses
// boleano
if ($tempo_servico >= 12) { if ($tem_reclamacoes != true) { } echo 'parabns, voc foi promovido';
if (($salario > 1000) and ($tempo_servico >= 12) and ($tem_reclamacoes != true)) { } ?> echo 'parabns, voc foi promovido';
Resultado:
parabns, voc foi promovido 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 verica o estado de uma varivel antes de atribuir o resultado.
37
O mesmo cdigo poderia ser escrito em uma nica linha da seguinte forma:
$resultado = ($valor_venda > 100) ? 'muito caro' : 'pode comprar';
A primeira expresso a condio a ser avaliada; a segunda o valor atribudo caso ela seja verdadeira; e a terceira o valor atribudo caso ela seja falsa.
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 uxo de funcionamento do comando WHILE. Quando a expresso avaliada como TRUE, o programa parte para a execuo de um bloco de comandos. Quando do m 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
while (expresso) { } comandos;
No exemplo a seguir, o comando WHILE est avaliando a expresso se $a menor que 5 como ponto de entrada do lao de repeties. Na primeira vez que executada esta comparao, retornado TRUE, visto que o valor de $a 1. Logo o programa entra no lao de repeties executando os comandos entre { }. Observe que, dentro do bloco de comandos, a varivel $a incrementada. Assim, esta execuo perdurar por mais algumas iteraes. Quando seu valor for igual a 5, a comparao retornar FALSE e no mais entrar no WHILE, deixando de executar o bloco de comandos.
<?php $a = 1; { } ?>
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
expr1 expr2 expr3
Descrio
Valor inicial da varivel contadora. Condio de execuo. Enquanto for TRUE, o bloco de comandos ser executado. Valor a ser incrementado aps cada execuo.
39
Exemplo:
<?php { } ?> for ($i = 1; $i <= 10; $i++) print $i;
Resultado:
12345678910
Procure utilizar nomes sugestivos para variveis, mas, em alguns casos especcos, como em contadores, permita-se utilizar variveis de apenas uma letra, como no exemplo a seguir:
<?php { for ( $i = 0; $i < 5; $i++ ) for ( $j = 0; $j < 4; $j++ ) { for ( $k = 0; $k < 3; $k++ ) { } // 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 especca em cada um destes casos. No uxograma 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 identicador default.
40
Sintaxe do comando:
switch ($expresso) { case "valor 1": // 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
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 vericada.
<?php $i = 1; {
} ?>
case 1:
case 2:
default:
Resultado:
i igual a 1
42
1.6.5 FOREACH
O foreach um lao de repetio para iteraes em arrays ou matrizes. um FOR simplicado 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 $fruta = array("ma", "laranja", "pra", "banana"); foreach ($fruta as $valor) { } ?> print "$valor -";
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 vericao 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 */
teste.php
<?php // carrega arquivo com a funo necessria include 'biblioteca.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 nal, utiliza-se a clusula return para retornar o resultado da funo (integer, string, array, objeto etc.).
<?php // exemplo de funo { } ?> function nome_da_funcao ($arg1, $arg2, $argN) $valor = $arg1 + $arg2 + $argN; return $valor;
No exemplo a seguir criamos uma funo que calcula o ndice de obesidade de algum. A funo recebe dois parmetros ($peso e $altura) e retorna um valor denido por uma frmula.
45
Resultado:
20.45288531775
$total += $quilometros;
echo 'percorreu ' . km2mi(100) . " milhas \n"; echo 'percorreu ' . km2mi(200) . " milhas \n"; ?> echo 'percorreu no total ' . $total . " quilometros \n";
Resultado:
percorreu 60 milhas percorreu 120 milhas
46
<?php { } function percorre($quilometros) static $total;
$total += $quilometros;
Resultado:
percorreu mais 100 do total de 100 percorreu mais 50 do total de 350 percorreu mais 200 do total de 300
Incrementa($a, 20);
Resultado:
10
Para efetuar a passagem de parmetros by reference para as funes, basta utilizar o operador & na frente do parmetro, fazendo com que as transformaes realizadas pela funo sobre a varivel sejam vlidas no contexto externo funo.
<?php { function Incrementa(&$variavel, $valor)
47
Incrementa($a, 20);
Resultado:
30
O PHP permite denir valores default para parmetros. Reescreveremos a funo anterior, declarando o default de $valor como sendo 40. Assim, se o programador executar a funo sem especicar o parmetro, ser assumido o valor 40.
<?php { } function Incrementa(&$variavel, $valor = 40) $variavel += $valor;
Incrementa($a);
Resultado:
50
O PHP tambm permite denir 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(); for($n=0; $n<$quantidade; $n++) { } echo 'Ol ' . $argumentos[$n] . "\n";
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
Resultado:
120 5040
fopen
Abre um arquivo e retorna um identicador. Se o nome do arquivo est na forma protocolo://... , o PHP ir procurar por um manipulador de protocolo, tambm conhecido como wrapper, conforme o prexo.
int fopen (string arquivo, string modo [,int usar_path [, resource contexto]])
Parmetros
arquivo modo usar_path contexto
Descrio
String identicando o nome do arquivo a ser aberto. Forma de abertura do arquivo (r=read, w=write, a=append). Se 1 ou TRUE, vasculha a path pelo arquivo a ser aberto. Opes de contexto; variam de acordo com o protocolo do arquivo.
49
Exemplo:
<?php $fp = fopen ("/home/pablo/file.txt", "r");
feof
Testa se um determinado identicador de arquivo (criado pela funo fopen()) est no m de arquivo (End Of File). Retorna TRUE se o ponteiro estiver no m do arquivo (EOF); do contrrio, retorna FALSE.
int feof (int identificador)
Parmetro
identicador
Descrio
Parmetro retornado pela fopen().
fgets
L uma linha de um arquivo. Retorna uma string com at (tamanho 1) bytes lidos do arquivo apontado pelo identicador 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
identicador tamanho
Descrio
Parmetro retornado pela fopen(). Quantidade em bytes a retornar da leitura.
Exemplo:
<?php $fd = fopen ("/etc/fstab", "r"); while (!feof ($fd)) { }
50 Resultado:
/dev/hda2 /dev/hda3 /dev/hda1 /dev/cdrom /dev/fd0 devpts proc swap / /windows /mnt/cdrom /mnt/floppy swap ext3 ntfs iso9660 devpts auto proc
defaults
1 1 1 0 0 0 0 0 0 0 0 0
0 0
/dev/pts
/proc
defaults
fwrite
Grava uma string (contedo) no arquivo apontado pelo identicador de arquivo. Se o argumento comprimento dado, a gravao ir parar depois que comprimento bytes for escrito ou o m 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
identicador contedo comprimento
Descrio
Parmetro retornado pela fopen(). String a escrever no arquivo. Comprimento da string.
Exemplo:
<?php // abre o arquivo
fwrite ($fp, "linha 1\n"); fwrite ($fp, "linha 2\n"); fwrite ($fp, "linha 3\n"); // fecha o arquivo fclose ($fp); ?>
fclose
Fecha o arquivo aberto apontado pelo identicador de arquivo. Retorna TRUE em caso de sucesso ou FALSE em caso de falha.
bool fclose (int identificador)
Parmetro
identicador
Descrio
Parmetro retornado pela fopen().
51
le_put_contents
Grava uma string em um arquivo. Retorna a quantidade de bytes gravados.
int file_put_contents (string nome_arquivo, mixed contedo)
Parmetros
nome_arquivo contedo
Descrio
Arquivo a ser aberto. Novo contedo.
Exemplo:
<?php ?> echo file_put_contents('/tmp/teste.txt', "este \n o contedo \n do arquivo");
le_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 proc /proc proc rw 0 0 /dev/hda1 /windows ntfs rw 0 0 usbfs /proc/bus/usb usbfs rw 0 0
le
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 // l o arquivo para o array $arquivo // exibe o contedo echo $arquivo[0]; echo $arquivo[1]; echo $arquivo[2]; ?>
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)
TRUE
Parmetros
arquivo_origem arquivo_destino
Descrio
Arquivo a ser copiado. Arquivo destino.
Exemplo:
<?php $origem = "/home/pablo/file.txt"; if (copy($origem, $destino)) { } { } ?> echo "Cpia efetuada";
$destino = "/home/pablo/file2.txt";
Resultado:
Cpia efetuada
53
rename
Altera a nomenclatura de um arquivo ou diretrio.
bool rename (string arquivo_origem, string arquivo_destino)
Parmetros
arquivo_origem arquivo_destino
Descrio
Arquivo a ser renomeado. Arquivo destino.
Exemplo:
<?php $origem = "/home/pablo/file2.txt"; $destino = "/tmp/file3.txt"; { } { } ?> if (rename($origem, $destino)) echo "Renomeao efetuada";
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)) { } { } ?>
54 Resultado:
Arquivo apagado
le_exists
Verica a existncia de um arquivo ou de um diretrio.
bool file_exists (string nome_arquivo)
Parmetros
nome_arquivo
Descrio
Localizao de um arquivo ou diretrio.
Exemplo:
<?php $arquivo { } { } ?> = '/home/pablo/file2.txt';
if (file_exists($arquivo))
Resultado:
Arquivo no existente
is_le
Verica se a localizao dada corresponde ou no a um arquivo.
bool is_file (string localizao)
Parmetros
Exemplo:
<?php
Descrio
else
55
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)) { } { } ?>
Resultado:
/tmp/diretorio criado com sucesso
getcwd
Retorna o diretrio corrente.
string getcwd ()
Exemplo:
<?php ?> echo 'o diretrio atual ' . getcwd();
Resultado:
o diretrio atual /tmp
56
chdir
TRUE
em caso de sucesso e
FALSE
em caso de
Parmetros
Exemplo:
<?php
Descrio
echo 'o diretrio atual ' . getcwd(); chdir('/home/pablo'); ?> echo 'o diretrio atual ' . getcwd();
Resultado:
o diretrio atual /tmp o diretrio atual /home/pablo
rmdir
Apaga um diretrio.
bool rmdir (string localizao)
Parmetros
Exemplo:
<?php
Descrio
Resultado:
/tmp/diretorio apagado com sucesso
57
opendir
Abre um diretrio e retorna um identicador.
resource opendir (string nome_diretorio)
Parmetros
nome_arquivo
Descrio
String identicando o nome do diretrio a ser aberto.
closedir
Libera um recurso alocado pela funo opendir().
void closedir (resource identificador)
Parmetros
identicador
Descrio
Identicador retornado pela funo opendir().
readdir
Realiza a leitura do contedo de um diretrio por meio do identicador criado pela funo opendir().
string readdir (resource identificador)
Parmetros
identicador
Descrio
Identicador retornado pela funo opendir().
Exemplo:
<?php // exibe as entradas do diretrio raiz $diretorio = '/'; // verifica se diretrio. if (is_dir($diretorio)) { } ?>
$ident = opendir($diretorio);
// lao de repetio para leitura. while ($arquivo = readdir($ident)) { } echo $arquivo . "\n";
closedir($ident);
Resultado:
. ..
58
var dev bin etc lib usr 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 m da string.
<?php $texto = <<<CHAVE Aqui nesta rea voc poder escrever CHAVE; ?>
Resultado:
Aqui nesta rea voc poder escrever
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
echo $fruta .' a fruta de ado'; // resultado = ma a fruta de ado // segunda forma ?>
O PHP realiza automaticamente a converso entre tipos, como neste exemplo de concatenao entre uma string e um nmero:
<?php $a = 1234; echo 'O salrio ' . $a . "\n"; echo "O salrio $a \n"; ?>
Resultado:
O salrio 1234 O salrio 1234
Caractere
\n \r \t \\ \ \$
Descrio
Nova linha, proporciona uma quebra de linha. Retorno de carro. Tabulao. Barra invertida "\\ o mesmo que '\. Aspas duplas. Smbolo de $.
60
Exemplo:
<?php echo "seu nome \"Paulo\".";
// resultado: seu nome "Paulo". // resultado: seu nome "Paulo". // seu salrio $650,00
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 ?> echo strtoupper('Convertendo para maisculo');
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
contedo
Descrio
String original a ser transformada.
61
Exemplo:
<?php ?> echo strtolower('CONVERTENDO PARA MINSCULO');
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 nal.
string substr (string contedo, int incio [, int comprimento])
Parmetros
contedo incio comprimento
Descrio
String original a ser percorrida. Caractere inicial a ser lido. Comprimento da cadeia de caracteres a ser lida.
Exemplo:
<?php $rest = substr("Amrica", 1); echo $rest . "\n"; echo $rest . "\n"; echo $rest . "\n"; echo $rest . "\n"; ?> $rest = substr("Amrica", 1, 3); $rest = substr("Amrica", 0, -1); $rest = substr("Amrica", -2);
Resultado:
mrica mr ca Amric
strpad
Preenche uma string com uma outra string, dentro de um tamanho especco.
string str_pad ( string entrada, int tamanho [, string complemento [, int tipo]])
62
Parmetros
entrada tamanho complemento tipo
Descrio
String inicial a ser complementada. Comprimento da string a ser retornada. String de preenchimento. Tipo de preenchimento. Pode ser STR_PAD_RIGHT (preenche com caracteres direita), STR_PAD_LEFT (preenche esquerda) ou STR_PAD_BOTH (preenche em ambos os lados).
Exemplo:
<?php $texto = "The Beatles";
print str_pad($texto, 20, "*", STR_PAD_LEFT) . "\n"; print str_pad($texto, 20, "*", STR_PAD_BOTH) . "\n"; print str_pad($texto, 20, "*") . "\n"; ?>
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
Exemplo:
<?php $txt = ".oO0Oo."; ?>
Resultado:
.oO0Oo..oO0Oo..oO0Oo..oO0Oo..oO0Oo.
strlen
Retorna o comprimento de uma string.
63
Parmetros
entrada
Descrio
String cujo comprimento ser calculado.
Exemplo:
<?php $txt = "O Rato roeu a roupa do rei de roma"; ?>
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
procura substitui contexto
Descrio
String a ser substituda. String substituta. String inicial a ser submetida substituio.
Exemplo:
<?php $txt = "O Rato roeu a roupa do rei de Roma"; print str_replace('Rato', 'Leo', $txt); ?>
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
principal procurada offset
Descrio
String qualquer. String a ser procurada dentro da string principal. Quantidade de caracteres a ser ignorada.
64
No exemplo a seguir, a funo strpos() vasculha a varivel $minha_string para encontrar em qualquer posio dentro dela a varivel $encontrar:
<?php $minha_string = 'O rato roeu a roupa do rei de Roma'; $encontrar = 'roupa'; if ($posicao) { } { } ?> $posicao = strpos($minha_string, $encontrar);
Resultado:
String encontrada na posio 14
Outra forma de criar um array simplesmente adicionando-lhe valores com a seguinte sintaxe:
65
De qualquer forma, para acessar o array indexado, basta indicar o seu ndice entre colchetes:
echo $cores[0]; echo $cores[1]; echo $cores[2]; echo $cores[3]; echo $nomes[0]; echo $nomes[1]; echo $nomes[2]; echo $nomes[3]; // resultado = azul // resultado = vermelho
// resultado = verde
// resultado = amarelo // resultado = maria // resultado = joo // resultado = jos // resultado = carlos
Outra forma de criar um array associativo simplesmente adicionando-lhe valores com a seguinte sintaxe:
$pessoa['nome'] $pessoa['rua'] = 'So Joo'; = 'Maria da Silva';
De qualquer forma, para acessar o array, basta indicar a sua chave entre colchetes:
echo $cores['vermelho']; // resultado = FF0000 echo $cores['azul']; echo $cores['verde']; echo $pessoa['nome']; echo $pessoa['rua']; // resultado = 0000FF // resultado = 00FF00 // resultado = Maria da Silva // 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'] $frutas['nome'] { } = 'vermelha'; = 'doce'; = 'ma';
$frutas['formato'] = 'redonda'; foreach ($frutas as $chave => $fruta) echo "$chave => $fruta \n";
Resultado:
cor => vermelha sabor => doce nome => ma formato => redonda
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
67
Resultado:
array(2) { } } ["carro"]=> ["valor"]=> float(198)
array(3) { [0]=> [1]=> [2]=> string(7) "Lazanha" string(15) "Pizza Calabreza" string(8) "Macarro"
'potncia'=>'1.0',
'Gol'
=> array('cor'=>'branco',
);
// resultado = Ar Cond.
68
$carros['Corsa']['potncia'] = '1.3'; $carros['Corsa']['opcionais'] = 'MP3'; $carros['Gol']['cor'] $carros['Gol']['potncia'] = '1.0';
= 'branco'; = 'Metalica';
$carros['Gol']['opcionais']
Para realizar iteraes em um array multidimensional preciso observar quantos nveis ele possui. No exemplo a seguir, realizamos uma iterao para o primeiro nvel do array (veculos) e, para cada iterao, realizamos uma nova iterao, para imprimir suas caractersticas.
<?php { } foreach ($carros as $modelo => $caracteristicas) echo "=> modelo $modelo\n"; { }
foreach ($caracteristicas as $caracteristica => $valor) echo "caracterstica $caracteristica => $valor\n";
?>
Resultado:
=> modelo Palio caracterstica cor => azul
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 nal de um array. Tem o mesmo efeito de utilizar a sintaxe $array[] = $valor.
int array_push (array nome_array, mixed valor [, mixed ...])
Parmetros
Descrio
nome_array Array a ser acrescido do valor. valor Valor a ser adicionado. ... Pode-se adicionar n valores.
Exemplo:
<?php $a = array("verde", "azul", "vermelho"); array_push($a, "amarelo"); var_dump($a); ?>
Resultado:
array(4) { [0]=> string(5) "verde" [1]=> string(4) "azul" [2]=> string(8) "vermelho" } [3]=> string(7) "amarelo"
array_pop
Remove um valor do nal de um array.
mixed array_pop (array nome_array)
Exemplo:
<?php $a = array("verde", "azul", "vermelho", "amarelo"); array_pop($a); var_dump($a); ?>
Resultado:
array(3) { [0]=> string(5) "verde" [1]=> string(4) "azul" } [2]=> string(8) "vermelho"
70
array_shift
Exemplo:
<?php $a = array("verde", "azul", "vermelho", "amarelo"); array_shift($a); var_dump($a); ?>
Resultado:
array(3) { [0]=> string(4) "azul"
array_unshift
Adiciona um elemento no incio de um array.
int array_unshift (array nome_array, mixed valor [, mixed ...])
Parmetros
Descrio
nome_array Array a ser acrescido do valor. valor Valor a ser adicionado. ... Pode-se adicionar n valores.
Exemplo:
<?php $a = array("verde", "azul", "vermelho"); array_unshift($a, "amarelo"); var_dump($a); ?>
Resultado:
array(4) { [0]=> string(7) "amarelo" [1]=> string(5) "verde" [2]=> string(4) "azul" }
71
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
nome_array Array a ser preenchido. tamanho Quantidade de posies. valor Valor a ser preenchido.
Exemplo:
<?php $a = array("verde", "azul", "vermelho"); $a = array_pad($a, 6, "branco"); var_dump($a); ?>
Resultado:
array(6) { } [0]=> string(5) "verde" [1]=> string(4) "azul" [2]=> string(8) "vermelho" [3]=> string(6) "branco" [4]=> string(6) "branco" [5]=> string(6) "branco"
array_reverse
Recebe um array e retorna-o na ordem inversa.
array array_reverse (array nome_array, boolean preservar_chaves)
Parmetros
nome_array preservar_chaves
Descrio
Array a ser revertido. Manter a associao de ndices.
Exemplo:
<?php $a[0] = 'green'; $a[2] = 'red';
$b = array_reverse($a, true);
72 Resultado:
array(4) { } [3]=> string(4) "blue" [2]=> string(3) "red" [1]=> string(6) "yellow" [0]=> string(5) "green"
array_merge
Mescla dois ou mais arrays. Um array adicionado ao nal 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
nome_array1 nome_array2 ...
Descrio
Primeiro array a ser mesclado. Segundo array a ser mesclado. Pode-se mesclar n arrays.
Exemplo:
<?php $a = array("verde", "azul"); $c = array_merge($a, $b); ?> var_dump($c);
$b = array("vermelho", "amarelo");
Resultado:
array(4) { } [0]=> string(5) "verde" [1]=> string(4) "azul" [2]=> string(8) "vermelho" [3]=> string(7) "amarelo"
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.
array array_keys (array nome_array [, mixed valor_procurado])
73
Parmetros
Descrio
nome_array Array cujos ndices desejamos descobrir. valor_procurado Parmetro opcional. Se preenchido, retornar apenas ndices contendo este valor.
Exemplo:
<?php $exemplo = array('cor' => 'vermelho', 'volume' => 5, 'animal'=>'cachorro'); $indices = array_keys($exemplo); print_r($indices); ?>
Resultado:
Array ( ) [0] => cor
array_values
Retorna um array contendo os valores de outro array.
array array_values (array nome_array)
Parmetros
nome_array
Descrio
Array cujos valores desejamos descobrir.
Exemplo:
<?php $exemplo = array('cor' => 'vermelho', 'volume' => 5, 'animal'=>'cachorro'); $valores = array_values($exemplo); print_r($valores); ?>
Resultado:
Array ( ) [0] => vermelho [1] => 5 [2] => cachorro
74
array_slice
Extrai uma poro de um array.
Parmetros
Descrio
nome_array Array cuja poro desejamos extrair. incio Primeira posio a ser extrada. tamanho Tamanho da poro extrada.
Exemplo:
<?php $a[0] = 'green'; $a[2] = 'red';
$a[1] = 'yellow'; $a[3] = 'blue'; $a[4] = 'gray'; $a[5] = 'white'; print_r($b); ?>
$b = array_slice($a, 2, 3);
Resultado:
Array ( ) [0] => red
count
Retorna a quantidade de elementos de um array.
int count (array nome_array)
Exemplo:
<?php $a = array('refrigerante', 'cerveja', 'vodka', 'suco natural'); echo 'o array $a contm ' . count($a) . ' posies'; ?>
Resultado:
o array $a contm 4 posies
75
array_in
Verica se um array contm um determinado valor.
boolean array_in (mixed valor, array nome_array)
Parmetro
Descrio
Exemplo:
<?php $a = array('refrigerante', 'cerveja', 'vodka', 'suco natural'); if (in_array('suco natural', $a)) { } ?>
Resultado:
suco natural encontrado
sort
Ordena um array pelo seu valor, no mantendo a associao de ndices.
boolean sort (array nome_array)
Exemplo:
<?php $a = array('refrigerante', 'cerveja', 'vodka', 'suco natural'); sort($a); ?> print_r($a);
Resultado:
Array ( ) [0] => cerveja
[1] => refrigerante [2] => suco natural [3] => vodka
76
rsort
Ordena um array em ordem reversa pelo seu valor, no mantendo a associao de ndices.
boolean rsort (array nome_array)
Exemplo:
<?php $a = array('refrigerante', 'cerveja', 'vodka', 'suco natural'); rsort($a); ?> print_r($a);
Resultado:
Array ( ) [0] => vodka
[1] => suco natural [2] => refrigerante [3] => cerveja
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[2] = 'red';
$a[1] = 'yellow'; $a[3] = 'blue'; $a[4] = 'gray'; asort($a); ?> $a[5] = 'white'; 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'] $carro['modelo'] ksort($carro); ?>
= 'branco'; = 'celta';
Resultado:
Array ( ) [cor] => branco
explode
Converte uma string em um array, separando os elementos por meio de um separador.
array explode (string separador, string padro)
Parmetros
separador padro
Descrio
Caractere que ser utilizado para desmembrar a string, convertendo-a em um array. String que desejamos converter em um array.
78
Exemplo:
<?php $string = "31/12/2004"; ?>
var_dump(explode("/", $string));
Resultado:
array(3) { } [0]=> [1]=> [2]=> string(2) "31" string(2) "12" 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
separador padro
Descrio
Caractere que ser utilizado para delimitar a nova string criada. Array original que desejamos converter em string.
Exemplo:
<?php $padrao = array('Maria', 'Paulo', 'Jos'); $resultado = implode(' + ', $padrao); var_dump($resultado); ?>
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 ( ) [0] => SetSalario [1] => GetSalario [2] => SetNome [3] => GetNome
get_class_vars
Retorna um vetor com os nomes das propriedades e contedos de uma determinada classe. Note que so valores estticos denidos na criao da classe.
array get_class_vars (string nome_classe)
80
Exemplo:
<?php { } ?> class Funcionario var $Codigo; var $Nome; var $Salario = 586;
function GetSalario()
print_r(get_class_vars('Funcionario'));
Resultado:
Array ( ) [Codigo] => [Nome] => [Salario] => 586
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; var $Salario = 586;
81
$jose = new Funcionario; $jose->Codigo = 44; $jose->Nome = 'Jos da Silva'; $jose->Salario += 100; $jose->Departamento = 'Financeiro'; print_r(get_object_vars($jose)); ?>
Resultado:
Array ( ) [Codigo] => 44
[Nome] => Jos da Silva [Salario] => 686 [Departamento] => Financeiro
get_class
Retorna o nome da classe a qual um objeto pertence.
string get_class (object nome_objeto)
Exemplo:
<?php { } class Funcionario var $Codigo; var $Nome; { } { } function SetSalario()
function GetSalario()
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
objeto
Descrio
Objeto ou nome de uma classe.
Exemplo:
<?php { } class Funcionario var $Codigo; var $Nome;
echo get_parent_class('estagiario');
// quebra de linha
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)
83
Parmetros
objeto classe
Descrio
Objeto ou nome de uma classe. Nome de uma classe ancestral.
Exemplo:
<?php { } { } class Funcionario var $Codigo; var $Nome;
$jose = new Estagiario; if (is_subclass_of($jose, 'Funcionario')) { } echo "Classe do objeto Jose derivada de Funcionario"; // quebra de linha
Resultado:
Classe do objeto Jose derivada de Funcionario Classe Estagiario derivada de Funcionario
method_exists
Verica se um determinado objeto possui o mtodo descrito. Podemos vericar a existncia de um mtodo antes de executar por engano um mtodo inexistente.
boolean method_exists (object objeto, string mtodo)
Parmetros
objeto mtodo
Descrio
Objeto qualquer. Nome de um mtodo do objeto.
84
Exemplo:
<?php { } class Funcionario var $Codigo; var $Nome;
$jose = new Funcionario; if (method_exists($jose, 'SetNome')) { } { } ?> echo 'Objeto Jose possui mtodo SetNome()';
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
funo parmetro
Descrio
Funo a ser executada. Parmetro(s) da funo.
85
Exemplo:
<?php // exemplo chamada simples function minhafuncao() { }
call_user_func(array($obj, 'MeuMetodo'));
Resultado:
minha funo! Meu mtodo! Meu mtodo!