php program an do com orientacao a objetos - parte

67
 PHP Programando com Orientação a Objetos Pablo Dall’Oglio Novatec

Upload: donald-pato

Post on 22-Jul-2015

118 views

Category:

Documents


0 download

TRANSCRIPT

PHPProgramando com Orientao a Objetos

Pablo DallOglio

Novatec

Captulo 1Introduo 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.

1.1 O que o PHP?A linguagem de programao PHP, cujo logotipo vemos na Figura 1.1, foi criada no outono de 1994 por Rasmus Lerdorf. No incio era formada por um conjunto de scripts voltados criao de pginas dinmicas que Rasmus utilizava para monitorar o acesso ao seu currculo na internet. medida que essa ferramenta foi crescendo em funcionalidades, Rasmus teve de escrever uma implementao em C, a qual permitia s pessoas desenvolverem de forma muito simples suas aplicaes para web. Rasmus nomeou essa verso de PHP/FI (Personal Home Pages/Forms Interpreter) e decidiu disponibilizar seu cdigo na web, em 1995, para compartilhar com outras pessoas, bem como receber ajuda e correo de bugs. Em novembro de 1997 foi lanada a segunda verso do PHP. Naquele momento, aproximadamente 50 mil domnios ou 1% da internet j utilizava PHP. No mesmo ano, Andi Gutmans e Zeev Suraski, dois estudantes que utilizavam PHP em um projeto acadmico de comrcio eletrnico, resolveram cooperar com Rasmus para

20

Captulo 1 Introduo ao PHP

21

aprimorar o PHP. Para tanto, reescreveram todo o cdigo-fonte, com base no PHP/FI 2, 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.

Figura 1.1 Logo do PHP .

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 oficialmente 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 finalmente presentes no PHP 5, aps um longo perodo de desenvolvimento que culminou com sua disponibilizao oficial em julho de 2004. Ao longo do livro veremos esses recursos empregados em exemplos prticos.Fonte: PHP Group

1.2 Um programa PHP1.2.1 Extenso de arquivosA forma mais comum de nomear programas em PHP a seguinte:

22Extenso.php .class.php .inc.php

PHP Programando com Orientao a Objetos

SignificadoArquivo PHP contendo um programa. Arquivo PHP contendo uma classe. Arquivo PHP a ser includo, pode incluir constantes ou configuraes.

Entretanto, outras extenses podem ser encontradas principalmente em programas antigos:

Extenso Significado.php3 .php4 .phtml

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.2 Delimitadores de cdigoO cdigo de um programa escrito em PHP deve estar contido entre os seguintes delimitadores:

Observao: os comandos sempre so delimitados por ponto-e-vrgula (;).

1.2.3 ComentriosPara comentar uma nica linha:// echo "a"; # echo "a";

Para comentar muitas linhas:/* echo "a"; echo "b"; */

1.2.4 Comandos de sada (output)Estes so os comandos utilizados para gerar uma sada em tela (output). Se o programa PHP for executado na linha de comando (prompt do sistema), a sada ser no prprio console. No entanto, se o programa for executado via servidor de pginas web (Apache ou IIS), a sada ser exibida na prpria pgina HTML gerada.

Captulo 1 Introduo ao PHP

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_dumpImprime 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_rImprime 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

PHP Programando com Orientao a Objetos

1.3 VariveisVariveis 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:

echo "$sobrenome, $nome";

Resultado:da Silva, Joo

Algumas dicas:

Nunca inicie a nomenclatura de variveis com nmeros. Nunca utilize espaos em branco no meio do identificador 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 significativos 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.

Captulo 1 Introduo ao PHP // exemplo de varivel

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.

// 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. // resultado = 5

// resultado = 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. // resultado = 10 // resultado = 10

PHP Programando com Orientao a Objetos

1.3.1 Tipo booleanoUm booleano expressa um valor lgico que pode ser verdadeiro ou falso. Para especificar um valor booleano, utilize as palavras-chave TRUE ou FALSE. No exemplo a seguir, declaramos a varivel booleana $exibir_nome, cujo contedo TRUE (verdadeiro). Em seguida, testaremos o contedo desta varivel para verificar se ela realmente verdadeira. Caso positivo, ser exibido na tela o nome Jos da Silva .

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 .

Captulo 1 Introduo ao PHP

27

Resultado:Est chovendo

Tambm so considerados valores falsos em comparaes booleanas:

Inteiro 0 Ponto flutuante 0.0 Uma string vazia ou 0 Um array vazio Um objeto sem elementos Tipo NULL

1.3.2 Tipo numricoNmeros podem ser especificados em notao decimal (base 10), hexadecimal (base 16) ou octal (base 8), opcionalmente precedido de sinal (- ou +). // notao cientfica

1.3.3 Tipo stringUma string uma cadeia de caracteres alfanumricos. Para declar-la podemos utilizar aspas simples ' ' ou aspas duplas " ". Veja, com mais detalhes, como manipular strings na seo Manipulao de strings.

28

PHP Programando com Orientao a Objetos

1.3.4 Tipo arrayArray uma lista de valores armazenados na memria, os quais podem ser de tipos diferentes (nmeros, strings, objetos) e podem ser acessados a qualquer momento, pois cada valor relacionado a uma chave. Um array tambm pode crescer dinamicamente com a adio de novos itens. Veja na seo Manipulao de arrays como manipular arrays.

// resultado = 'Corsa'

1.3.5 Tipo objetoUm objeto uma entidade com um determinado comportamento definido por seus mtodos (aes) e propriedades (dados). Para criar um objeto deve-se utilizar o operador new. Veja o exemplo de um objeto do tipo Computador e aprenda, no Captulo 2, como manipular classes e objetos.

Resultado:Ligando computador a 500Mhz...

1.3.6 Tipo recursoRecurso (resource) uma varivel especial que mantm uma referncia de recurso externo. Recursos so criados e utilizados por funes especiais, como uma conexo ao banco de dados. Um exemplo a funo mysql_connect(), que, ao conectar-se ao banco de dados, retorna uma varivel de referncia do tipo recurso.resource mysql_connect(...)

Captulo 1 Introduo ao PHP

29

1.3.7 Tipo mistoO tipo misto (mixed) representa mltiplos (no necessariamente todos) tipos de dados em um mesmo parmetro. Um parmetro do tipo mixed indica que a funo aceita diversos tipos de dados como parmetro. Um exemplo a funo gettype(), a qual obtm o tipo da varivel passada como parmetro (que pode ser integer, string, array, objeto, entre outros).string gettype (mixed var)

Veja alguns resultados possveis:"boolean" "double" "string" "array" "object" "NULL" "integer"

"resource"

1.3.8 Tipo callbackAlgumas funes como call_user_func() aceitam um parmetro que significa uma funo a ser executada. Este tipo de dado chamado de callback. Um parmetro callback pode ser o nome de uma funo representada por uma string ou o mtodo de um objeto a ser executado, representados por um array. Veja os exemplos na documentao da funo call_user_func().

1.3.9 Tipo NULLA utilizao do valor especial NULL significa que a varivel no tem valor. NULL o nico valor possvel do tipo NULL.

1.4 ConstantesUma 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

PHP Programando com Orientao a Objetos

Voc pode definir uma constante utilizando a funo define(). Quando uma constante definida, ela no pode mais ser modificada ou anulada. Exemplo:

Resultado:100

1.5 Operadores1.5.1 AtribuioUm operador de atribuio utilizado para definir uma varivel atribuindo-lhe um valor. O operador bsico de atribuio =. $var /= 5; // Soma 5 em $var;

// Subtrai 5 em $var; // Divide $var por 5;

// Multiplica $var por 5;

Operadores++$a $a++ --$a $a--

DescrioPr-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 AritmticosOperadores aritmticos so utilizados para realizao de clculos matemticos.

Operadores+ * / %

DescrioAdio. Subtrao. Multiplicao. Diviso. Mdulo (resto da diviso).

Captulo 1 Introduo ao PHP

31

Em clculos complexos, procure utilizar parnteses, sempre observando as prioridades aritmticas. Por exemplo: // resultado = 34 // resultado = 40

echo ($a+3)*4+(5*$b);

O PHP realiza automaticamente a converso de tipos em operaes:

echo $a + 5;

Resultado:15

1.5.3 RelacionaisOperadores relacionais so utilizados para realizar comparaes entre valores ou expresses, resultando sempre um valor boolean (TRUE ou FALSE).

Comparadores== === != ou < >

DescrioIgual. 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.

32 Resultado:

PHP Programando com Orientao a Objetos

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 !=.

Resultado:$a e $b so iguais

No prximo caso, alm da comparao entre as variveis, comparamos tambm os tipos de dados das variveis.

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

Captulo 1 Introduo ao PHP

33

retornar tanto um valor booleano quanto um inteiro, podemos utilizar as seguintes comparaes:

Resultado:$e falso $e zero mesmo

1.5.4 LgicosOperadores lgicos so utilizados para combinar expresses lgicas entre si, agrupando testes condicionais.

Operador($a and $b) ($a or $b) ($a xor $b) (! $a)

DescrioE: Verdadeiro (TRUE) se tanto $a quanto $b forem verdadeiros. OU: Verdadeiro (TRUE) se $a ou $b forem verdadeiros. XOR: Verdadeiro (TRUE) se $a ou $b forem verdadeiros, de forma exclusiva. 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.

($a && $b) ($a || $b)

Observao: or e and tm precedncia maior que && ou ||.

34

PHP Programando com Orientao a Objetos

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 .

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 .

Resultado:Vou pensar duas vezes antes de sair

1.6 Estruturas de controle1.6.1 IFO IF uma estrutura de controle que introduz um desvio condicional, ou seja, um desvio na execuo natural do programa. Caso a condio dada pela expresso seja satisfeita, ento sero executadas as instrues do bloco de comandos. Caso a condio no seja satisfeita, o bloco de comandos ser simplesmente ignorado. O comando IF pode ser lido como SE (expresso) ENTO { comandos... } .

Captulo 1 Introduo ao PHP

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 fluxograma 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.

Figura 1.2 Fluxo do comando IF.if (expresso) { } { } comandos se expresso verdadeira;

else comandos se expresso falsa;

Exemplo:

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

Resultado:$a tem contedo

Para realizar testes encadeados, basta colocar um IF dentro do outro, ou mesmo utilizar o operador AND da seguinte forma:

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 verifica o estado de uma varivel antes de atribuir o resultado.

Captulo 1 Introduo ao PHPif ($valor_venda > 100) { } { } $resultado = 'muito caro';

37

else $resultado = 'pode comprar';

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 WHILEO 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).

Figura 1.3 Fluxo do comando WHILE.

38while (expresso) { } comandos;

PHP Programando com Orientao a Objetos

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.

Resultado:1234

1.6.3 FORO 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

Parmetrosexpr1 expr2 expr3

DescrioValor inicial da varivel contadora. Condio de execuo. Enquanto for TRUE, o bloco de comandos ser executado. Valor a ser incrementado aps cada execuo.

Captulo 1 Introduo ao PHP

39

Exemplo:

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:

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 SWITCHO 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

PHP Programando com Orientao a Objetos

Figura 1.4 Fluxo do comando SWITCH.

Sintaxe do comando:switch ($expresso) { case "valor 1": // comandos break;

case "valor 2": // comandos break;

case "valor n"; // 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.

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.

Resultado:i igual a 1

42

PHP Programando com Orientao a Objetos

1.6.5 FOREACHO 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:

Resultado:ma laranja pra banana

1.6.6 CONTINUEA 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 BREAKO 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...

break

Captulo 1 Introduo ao PHP

43

1.7 Requisio de arquivosEm linguagens de script como o PHP, freqentemente precisamos incluir dentro de nossos programas outros arquivos com definies de funes, constantes, configuraes, ou mesmo carregar um arquivo contendo a definio de uma classe. Para atingir este objetivo no PHP, podemos fazer uso de um dos seguintes comandos:

include 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

teste.php

Resultado:16

require 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.

44include_once

PHP Programando com Orientao a Objetos

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 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 Manipulao de funesUma funo um pedao de cdigo com um objetivo especfico, encapsulado sob uma estrutura nica que recebe um conjunto de parmetros e retorna um dado. Uma funo declarada uma nica vez, mas pode ser utilizada diversas vezes. uma das estruturas mais bsicas para prover reusabilidade.

1.8.1 CriaoPara 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.).

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 definido por uma frmula.

Captulo 1 Introduo ao PHP

Resultado:20.45288531775

1.8.2 Variveis globaisTodas as variveis declaradas dentro do escopo de uma funo so locais. Para acessar uma varivel externa ao contexto de uma funo sem pass-la como parmetro, necessrio declar-la como global. Uma varivel global acessada a partir de qualquer ponto da aplicao. No exemplo a seguir, a funo criada converte quilmetros para milhas, enquanto acumula a quantidade de quilmetros percorridos em uma varivel global ($total). echo 'percorreu no total ' . $total . " quilometros \n";

Resultado:percorreu 60 milhas percorreu 120 milhas

percorreu no total 300 quilometros

1.8.3 Variveis estticasDentro do escopo de uma funo podemos armazenar variveis de forma esttica. Assim, elas mantm o valor que lhes foi atribudo na ltima execuo. Declaramos uma varivel esttica com o operador static.

46

Resultado:percorreu mais 100 do total de 100 percorreu mais 50 do total de 350 percorreu mais 200 do total de 300

1.8.4 Passagem de parmetrosExistem dois tipos de passagem de parmetros: por valor (by value) e por referncia (by reference). Por padro, os valores so passados by value para as funes. Assim, o parmetro que a funo recebe tratado como varivel local dentro do contexto da funo, no alterando o seu valor externo. Os objetos, vistos no Captulo 2, so a exceo.

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.

Incrementa($a, 20);

Resultado:30

O PHP permite definir valores default para parmetros. Reescreveremos a funo anterior, declarando o default de $valor como sendo 40. Assim, se o programador executar a funo sem especificar o parmetro, ser assumido o valor 40.

Incrementa($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().

48 Resultado:Ol Joo Ol Maria Ol Jos Ol Pedro

PHP Programando com Orientao a Objetos

1.8.5 RecursoO PHP permite chamada de funes recursivamente. No caso a seguir criaremos uma funo para calcular o fatorial de um nmero.

Resultado:120 5040

1.9 Manipulao de arquivos e diretriosA seguir veremos uma srie de funes utilizadas exclusivamente para manipulao de arquivos, como abertura, leitura, escrita e fechamento dos mesmos.

fopenAbre 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]])

Parmetrosarquivo modo usar_path contexto

DescrioString identificando 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.

Captulo 1 Introduo ao PHP

49

Exemplo:

$fp = fopen ("ftp://user:[email protected]/", "w");

feofTesta 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)

Parmetroidentificador

DescrioParmetro retornado pela fopen().

fgetsL 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])

Parmetrosidentificador tamanho

DescrioParmetro retornado pela fopen(). Quantidade em bytes a retornar da leitura.

Exemplo:

50 Resultado:/dev/hda2 /dev/hda3 /dev/hda1 /dev/fd0 devpts proc /dev/cdrom swap / /windows swap ext3 ntfs auto proc iso9660 devpts

PHP Programando com Orientao a Objetos

defaults defaults

defaults

1 1 0 0 0 0

0

0

1 0 0 0 0 0

/mnt/cdrom /dev/pts /proc

/mnt/floppy

noauto,owner,ro noauto,owner defaults gid=5,mode=620

fwriteGrava 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])

Parmetrosidentificador contedo comprimento

DescrioParmetro retornado pela fopen(). String a escrever no arquivo. Comprimento da string.

Exemplo:

fcloseFecha o arquivo aberto apontado pelo identificador de arquivo. Retorna TRUE em caso de sucesso ou FALSE em caso de falha.bool fclose (int identificador)

Parmetroidentificador

DescrioParmetro retornado pela fopen().

Captulo 1 Introduo ao PHP

51

file_put_contentsGrava uma string em um arquivo. Retorna a quantidade de bytes gravados.int file_put_contents (string nome_arquivo, mixed contedo)

Parmetrosnome_arquivo contedo

DescrioArquivo a ser aberto. Novo contedo.

Exemplo: echo file_put_contents('/tmp/teste.txt', "este \n o contedo \n do arquivo");

file_get_contentsL o contedo de um arquivo e retorna o contedo em forma de string.string file_get_contents (string nome_arquivo, ...)

Exemplo: 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

fileL 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])

Parmetrosnome_arquivo usar_include_path

DescrioArquivo a ser lido. Se 1 procura tambm nos diretrios da constante PHP_INCLUDE_ , PATH.

52Exemplo:

PHP Programando com Orientao a Objetos

$arquivo = file ("/home/pablo/file.txt");

Resultado:linha 1 linha 2 linha 3

copyCopia um arquivo para outro local/nome. Retorna FALSE em caso de falhas.bool copy (string arquivo_origem, string arquivo_destino)

TRUE

caso tenha sucedido e

Parmetrosarquivo_origem arquivo_destino

DescrioArquivo a ser copiado. Arquivo destino.

Exemplo:

Resultado:Cpia efetuada

Captulo 1 Introduo ao PHP

53

renameAltera a nomenclatura de um arquivo ou diretrio.bool rename (string arquivo_origem, string arquivo_destino)

Parmetrosarquivo_origem arquivo_destino

DescrioArquivo a ser renomeado. Arquivo destino.

Exemplo:

Resultado:Renomeao efetuada

unlinkApaga um arquivo passado como parmetro. Retorna TRUE em caso de sucesso e FALSE em caso de falhas.bool unlink (string nome_arquivo)

Exemplo:

54 Resultado:Arquivo apagado

PHP Programando com Orientao a Objetos

file_existsVerifica a existncia de um arquivo ou de um diretrio.bool file_exists (string nome_arquivo)

Parmetrosnome_arquivo

DescrioLocalizao de um arquivo ou diretrio.

Exemplo:

Resultado:Arquivo no existente

is_fileVerifica se a localizao dada corresponde ou no a um arquivo.bool is_file (string localizao)

Parmetroslocalizao

DescrioLocalizao de um arquivo ou diretrio.

Exemplo:

Resultado:/home/pablo/file.txt um arquivo

mkdirCria um diretrio.bool mkdir (string localizao, [int modo])

Parmetroslocalizao modo

DescrioLocalizao de um diretrio. Permisso de acesso.

Exemplo:

Resultado:/tmp/diretorio criado com sucesso

getcwdRetorna o diretrio corrente.string getcwd ()

Exemplo: echo 'o diretrio atual ' . getcwd();

Resultado:o diretrio atual /tmp

56chdir

PHP Programando com Orientao a Objetos

Altera o diretrio corrente. Retorna falhas.bool chdir (string localizao)

TRUE

em caso de sucesso e

FALSE

em caso de

Parmetroslocalizao

DescrioLocalizao de um diretrio.

Exemplo: echo 'o diretrio atual ' . getcwd();

Resultado:o diretrio atual /tmp o diretrio atual /home/pablo

rmdirApaga um diretrio.bool rmdir (string localizao)

Parmetroslocalizao

DescrioLocalizao de um diretrio.

Exemplo:

Resultado:/tmp/diretorio apagado com sucesso

Captulo 1 Introduo ao PHP

57

opendirAbre um diretrio e retorna um identificador.resource opendir (string nome_diretorio)

Parmetrosnome_arquivo

DescrioString identificando o nome do diretrio a ser aberto.

closedirLibera um recurso alocado pela funo opendir().void closedir (resource identificador)

Parmetrosidentificador

DescrioIdentificador retornado pela funo opendir().

readdirRealiza a leitura do contedo de um diretrio por meio do identificador criado pela funo opendir().string readdir (resource identificador)

Parmetrosidentificador

DescrioIdentificador retornado pela funo opendir().

Exemplo:

Resultado:. ..

58var dev bin etc lib usr boot home

PHP Programando com Orientao a Objetos

1.10 Manipulao de strings1.10.1 DeclaraoUma string uma cadeia de caracteres alfanumricos. Para declarar uma string podemos utilizar aspas simples ' ' ou aspas duplas " ".$variavel = 'Isto um teste'; $variavel = "Isto um teste";

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.

// resultado 'como ma'

// resultado 'como $fruta'

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.

textos com mltiplas linhas echo $texto;

Resultado:Aqui nesta rea voc poder escrever

textos com mltiplas linhas.

Captulo 1 Introduo ao PHP

59

1.10.2 ConcatenaoPara concatenar strings, pode-se utilizar o operador .ou colocar mltiplas variveis dentro de strings duplas uma vez que seu contedo interpretado. ,

// resultado = ma a fruta de ado

echo "{$fruta} a fruta de ado";

// resultado = ma a fruta de ado

O PHP realiza automaticamente a converso entre tipos, como neste exemplo de concatenao entre uma string e um nmero:

Resultado:O salrio 1234 O salrio 1234

1.10.3 Caracteres de escapeDentro de aspas duplas podemos utilizar controles especiais interpretados diferentemente pelo PHP, que so os caracteres de escape (\). Veja a seguir os mais utilizados:

Caractere Descrio\n \r \t \\ \ \$ Nova linha, proporciona uma quebra de linha. Retorno de carro. Tabulao. Barra invertida "\\ o mesmo que '\. Aspas duplas. Smbolo de $.

60Exemplo:

PHP Programando com Orientao a Objetos

// resultado: seu nome "Paulo". // resultado: seu nome "Paulo". // seu salrio $650,00 // seu salrio $650,00

echo "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 FunesAs funes a seguir formam um grupo cuja caracterstica comum a manipulao de cadeias de caracteres (strings), como converses, transformaes, entre outras funcionalidades.

strtoupperTransforma uma string (contedo) para maisculo. Retorna a string com todos os caracteres alfabticos convertidos para maisculo.string strtoupper (string contedo)

Exemplo: echo strtoupper('Convertendo para maisculo');

Resultado:CONVERTENDO PARA MAISCULO

strtolowerTransforma uma string (contedo) para minsculo. Retorna a string com todos os caracteres alfabticos convertidos para minsculo.string strtolower (string contedo)

Parmetroscontedo

DescrioString original a ser transformada.

Captulo 1 Introduo ao PHP

61

Exemplo: echo strtolower('CONVERTENDO PARA MINSCULO');

Resultado:convertendo para minsculo

substrRetorna 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])

Parmetroscontedo incio comprimento

DescrioString original a ser percorrida. Caractere inicial a ser lido. Comprimento da cadeia de caracteres a ser lida.

Exemplo: $rest = substr("Amrica", 1, 3); $rest = substr("Amrica", 0, -1); $rest = substr("Amrica", -2);

Resultado:mrica mr ca Amric

strpadPreenche uma string com uma outra string, dentro de um tamanho especfico.string str_pad ( string entrada, int tamanho [, string complemento [, int tipo]])

62Parmetrosentrada tamanho complemento tipo

PHP Programando com Orientao a Objetos

DescrioString 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:

Resultado:The Beatles *********The Beatles ****The Beatles***** The Beatles*********

str_repeatRepete uma string uma certa quantidade de vezes.string str_repeat ( string entrada, int quantidade)

Parmetrosentrada quantidade

DescrioString inicial a ser repetida. Quantidade de repeties.

Exemplo:

print str_repeat($txt, 5) . "\n";

Resultado:.oO0Oo..oO0Oo..oO0Oo..oO0Oo..oO0Oo.

strlenRetorna o comprimento de uma string.

Captulo 1 Introduo ao PHPint strlen ( string entrada )

63

Parmetrosentrada

DescrioString cujo comprimento ser calculado.

Exemplo:

print 'O comprimento : ' . strlen($txt) . "\n";

Resultado:O comprimento : 34

str_replaceSubstitui uma string por outra em um dado contexto.mixed str_replace ( mixed procura, mixed substitui, mixed contexto)

Parmetrosprocura substitui contexto

DescrioString a ser substituda. String substituta. String inicial a ser submetida substituio.

Exemplo:

Resultado:O Leo roeu a roupa do rei de Roma

strposEncontra a primeira ocorrncia de uma string dentro de outra.int strpos (string principal, string procurada [, int offset])

Parmetrosprincipal procurada offset

DescrioString qualquer. String a ser procurada dentro da string principal. Quantidade de caracteres a ser ignorada.

64

PHP Programando com Orientao a Objetos

No exemplo a seguir, a funo strpos() vasculha a varivel $minha_string para encontrar em qualquer posio dentro dela a varivel $encontrar:

Resultado:String encontrada na posio 14

1.11 Manipulao de arraysA manipulao de arrays no PHP , sem dvida, um dos recursos mais poderosos da linguagem. O programador que assimilar bem esta parte ter muito mais produtividade no seu dia-a-dia. Isto porque os arrays no PHP servem como verdadeiros contineres, servindo para armazenar nmeros, strings, objetos, dentre outros, de forma dinmica. Alm disso, o PHP nos oferece uma gama enorme de funes para manipul-los, as quais sero vistas a seguir.

1.11.1 Criando um arrayArrays so acessados mediante uma posio, como um ndice numrico. Para criar um array, pode-se utilizar a funo array([chave =>] valor , ... ).$cores = array('vermelho', 'azul', 'verde', 'amarelo'); ou $cores = array(0=>'vermelho', 1=>'azul', 2=>'verde', 3=>'amarelo');

Outra forma de criar um array simplesmente adicionando-lhe valores com a seguinte sintaxe:

Captulo 1 Introduo ao PHP$nomes[] = 'maria'; $nomes[] = 'joo'; $nomes[] = 'jos'; $nomes[] = 'carlos';

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

1.11.2 Arrays associativosOs arrays no PHP so associativos pois contm uma chave de acesso para cada posio. Para criar um array, pode-se utilizar a funo array([chave =>] valor , ... ).$cores = array('vermelho' => 'FF0000', 'azul' => '0000FF', 'verde' => '00FF00');

Outra forma de criar um array associativo simplesmente adicionando-lhe valores com a seguinte sintaxe:$pessoa['nome'] $pessoa['rua'] = 'So Joo'; = 'Maria da Silva';

$pessoa['bairro'] = 'Cidade Alta';

$pessoa['cidade'] = 'Porto Alegre';

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']; echo $pessoa['bairro']; echo $pessoa['cidade']; // resultado = 0000FF // resultado = 00FF00 // resultado = Maria da Silva // resultado = So Joo // resultado = Cidade Alta

// resultado = Porto Alegre

Observao: a chave pode ser string ou integer no negativo; o valor pode ser de qualquer tipo.

66

PHP Programando com Orientao a Objetos

1.11.3 IteraesOs 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 AcessoAs posies de um array podem ser acessadas a qualquer momento, e sobre elas operaes podem ser realizadas.

$comidas[1] = 'Pizza Calabreza'; var_dump($comidas);

Captulo 1 Introduo ao PHP

67

Resultado:array(2) { ["carro"]=> ["valor"]=> } float(198)

string(12) "Plio ED 1.0"

array(3) { [0]=> [1]=> [2]=> } string(7) "Lazanha" string(15) "Pizza Calabreza" string(8) "Macarro"

1.11.5 Arrays multidimensionaisArrays multidimensionais ou matrizes so arrays nos quais algumas de suas posies podem conter outros arrays de forma recursiva. Um array multidimensional pode ser criado pela funo array():

// resultado = Ar Cond.

Outra forma de criar um array multidimensional simplesmente atribuindo-lhe valores:

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.

Resultado:=> modelo Palio caracterstica cor => azul

caracterstica potncia => 1.0 => modelo Corsa

caracterstica opcionais => Ar Cond. caracterstica cor => cinza

caracterstica potncia => 1.3 => modelo Gol

caracterstica opcionais => MP3 caracterstica cor => branco

caracterstica potncia => 1.0

caracterstica opcionais => Metalica

1.11.6 FunesA seguir veremos uma srie de funes utilizadas exclusivamente para manipulao de arrays, funes de ordenao, interseco, acesso, dentre outras.

Captulo 1 Introduo ao PHP

69

array_pushAdiciona 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

nome_array Array a ser acrescido do valor. valor Valor a ser adicionado. ... Pode-se adicionar n valores.

Exemplo:

Resultado:array(4) { [0]=> string(5) "verde" [1]=> string(4) "azul" [2]=> string(8) "vermelho" } [3]=> string(7) "amarelo"

array_popRemove um valor do final de um array.mixed array_pop (array nome_array)

Exemplo:

Resultado:array(3) { [0]=> string(5) "verde" [1]=> string(4) "azul" } [2]=> string(8) "vermelho"

70array_shift

PHP Programando com Orientao a Objetos

Remove um elemento do incio de um array.mixed array_shift (array nome_array)

Exemplo:

Resultado:array(3) { [0]=> string(4) "azul"

[1]=> string(8) "vermelho" } [2]=> string(7) "amarelo"

array_unshiftAdiciona 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:

Resultado:array(4) { [0]=> string(7) "amarelo" [1]=> string(5) "verde" [2]=> string(4) "azul" }

[3]=> string(8) "vermelho"

Captulo 1 Introduo ao PHP

71

array_padPreenche 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:

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_reverseRecebe um array e retorna-o na ordem inversa.array array_reverse (array nome_array, boolean preservar_chaves)

Parmetrosnome_array preservar_chaves

DescrioArray a ser revertido. Manter a associao de ndices.

Exemplo:

$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"

PHP Programando com Orientao a Objetos

array_mergeMescla 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 ...])

Parmetrosnome_array1 nome_array2 ...

DescrioPrimeiro array a ser mesclado. Segundo array a ser mesclado. Pode-se mesclar n arrays.

Exemplo: 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_keysRetorna 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])

Captulo 1 Introduo ao PHP

73

Parmetros

Descrio

nome_array Array cujos ndices desejamos descobrir. valor_procurado Parmetro opcional. Se preenchido, retornar apenas ndices contendo este valor.

Exemplo:

Resultado:Array ( [0] => cor

[1] => volume ) [2] => animal

array_valuesRetorna um array contendo os valores de outro array.array array_values (array nome_array)

Parmetrosnome_array

DescrioArray cujos valores desejamos descobrir.

Exemplo:

Resultado:Array ( [0] => vermelho [1] => 5 ) [2] => cachorro

74array_sliceExtrai uma poro de um array.

PHP Programando com Orientao a Objetos

array array_slice (array nome_array, int incio, int tamanho)

Parmetros

Descrio

nome_array Array cuja poro desejamos extrair. incio Primeira posio a ser extrada. tamanho Tamanho da poro extrada.

Exemplo:

$b = array_slice($a, 2, 3);

Resultado:Array ( [0] => red

[1] => blue ) [2] => gray

countRetorna a quantidade de elementos de um array.int count (array nome_array)

Exemplo:

Resultado:o array $a contm 4 posies

Captulo 1 Introduo ao PHP

75

array_inVerifica 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:

Resultado:suco natural encontrado

sortOrdena um array pelo seu valor, no mantendo a associao de ndices.boolean sort (array nome_array)

Exemplo: print_r($a);

Resultado:Array ( [0] => cerveja

[1] => refrigerante [2] => suco natural ) [3] => vodka

76rsort

PHP Programando com Orientao a Objetos

Ordena um array em ordem reversa pelo seu valor, no mantendo a associao de ndices.boolean rsort (array nome_array)

Exemplo: print_r($a);

Resultado:Array ( [0] => vodka

[1] => suco natural [2] => refrigerante ) [3] => cerveja

asortOrdena um array pelo seu valor, mantendo a associao de ndices. Para ordenar de forma reversa, use arsort().void asort (array nome_array)

Exemplo: $a[5] = 'white'; print_r($a);

Resultado:Array (

Captulo 1 Introduo ao PHP[3] => blue [4] => gray [2] => red [0] => green [5] => white )

77

[1] => yellow

ksortOrdena um array pelos seus ndices. Para ordem reversa, utilize krsort().boolean ksort (array nome_array)

Exemplo:

= 'branco'; = 'celta';

$carro['opcionais'] = 'ar quente'; print_r($carro);

Resultado:Array ( [cor] => branco

[modelo] => celta [potncia] => 1.0

[opcionais] => ar quente )

explodeConverte uma string em um array, separando os elementos por meio de um separador.array explode (string separador, string padro)

Parmetrosseparador padro

DescrioCaractere que ser utilizado para desmembrar a string, convertendo-a em um array. String que desejamos converter em um array.

78Exemplo:

PHP Programando com Orientao a Objetos

var_dump(explode("/", $string));

Resultado:array(3) { [0]=> [1]=> [2]=> } string(2) "31" string(2) "12" string(4) "2004"

implodeConverte um array em uma string, separando os elementos do array por meio de um separador.array implode (string separador, array padro)

Parmetrosseparador padro

DescrioCaractere que ser utilizado para delimitar a nova string criada. Array original que desejamos converter em string.

Exemplo:

Resultado:string(20) "Maria + Paulo + Jos"

Captulo 1 Introduo ao PHP

79

1.12 Manipulao de objetosNesta seo, veremos uma srie de funes relacionadas manipulao de objetos. Para maiores detalhes sobre orientao a objetos, veja o Captulo 2.

get_class_methodsRetorna um vetor com os nomes dos mtodos de uma determinada classe.array get_class_methods (string nome_classe)

Exemplo:

Resultado:Array ( [0] => SetSalario [1] => GetSalario [2] => SetNome ) [3] => GetNome

get_class_varsRetorna 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)

80Exemplo: }

function GetSalario()

print_r(get_class_vars('Funcionario'));

Resultado:Array ( [Codigo] => [Nome] => [Salario] => 586 )

[Departamento] => Contabilidade

get_object_varsRetorna 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:

Resultado:Array ( [Codigo] => 44

[Nome] => Jos da Silva [Salario] => 686 ) [Departamento] => Financeiro

get_classRetorna o nome da classe a qual um objeto pertence.string get_class (object nome_objeto)

Exemplo:

82 Resultado:Funcionario

PHP Programando com Orientao a Objetos

get_parent_classRetorna 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)

Parmetrosobjeto

DescrioObjeto ou nome de uma classe.

Exemplo:

echo get_parent_class('estagiario');

// quebra de linha

Resultado:Funcionario Funcionario

is_subclass_ofIndica se um determinado objeto ou classe derivado de uma determinada classe.boolean is_subclass_of (mixed objeto, string classe)

Captulo 1 Introduo ao PHP

83

Parmetrosobjeto classe

DescrioObjeto ou nome de uma classe. Nome de uma classe ancestral.

Exemplo:

Resultado:Classe do objeto Jose derivada de Funcionario Classe Estagiario derivada de Funcionario

method_existsVerifica se um determinado objeto possui o mtodo descrito. Podemos verificar a existncia de um mtodo antes de executar por engano um mtodo inexistente.boolean method_exists (object objeto, string mtodo)

Parmetrosobjeto mtodo

DescrioObjeto qualquer. Nome de um mtodo do objeto.

84Exemplo:

Resultado:Objeto Jose possui mtodo SetSalario()

call_user_funcExecuta 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 ...]])

Parmetrosfuno parmetro

DescrioFuno a ser executada. Parmetro(s) da funo.

Captulo 1 Introduo ao PHP

85

Exemplo:

call_user_func(array($obj, 'MeuMetodo'));

Resultado:minha funo! Meu mtodo! Meu mtodo!