Você está na página 1de 20

APOSTILA PHP

PARTE 1

1. Introduo O que PHP? PHP significa: PHP Hypertext Preprocessor. Realmente, o produto foi

originalmente chamado de Personal Home Page Tools; mas como se expandiu em escopo, um nome novo e mais apropriado foi escolhido por votao da comunidade. A extenso .php a recomendada para designar um arquivo PHP. PHP uma linguagem de criao de scripts embutida em HTML no servidor. Pode-se pensar no PHP como uma coleo de supertags de HTML que permitem adicionar funes do servidor s suas pginas da Web. Por exemplo, possvel utilizar PHP para montar instantaneamente uma complexa pgina da Web. O PHP tem pouca relao com layout, eventos ou qualquer coisa relacionada aparncia de uma pgina da Web. De fato, a maior parte do que o PHP realiza invisvel para o usurio final. Algum visualizando uma pgina de PHP no ser capaz de dizer que no foi escrita em HTML, porque o resultado final do PHP HTML.

O que pode ser feito com PHP?

Alguns exemplos do que pode ser feito em PHP :

coletar dados de um

formulrio, gerar pginas dinamicamente ou enviar e receber cookies. PHP tambm tem como uma das caractersticas mais importantes, o suporte a um grande nmero de bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle, Sybase, PostgreSQL e vrios outros. Construir uma pgina baseada em um banco de dados torna-se uma tarefa extremamente simples com PHP.

2. Sintaxe Bsica O cdigo PHP fica embutido no prprio HTML. O interpretador identifica quando um cdigo PHP pelas seguintes tags: <?php comandos ?>

<script language=php> comandos </script> <? comandos ?> O tipo de tags mais utilizado o terceiro, que consiste em uma abreviao do primeiro. Separador de instrues

Para cada fim de linha de cdigo tem que haver um ponto e vrgula, indicando ao sistema fim de instruo. Exemplo. <? echo 'com ponto e vrgula' ; ?> Linhas de comando, de controle, no precisam de ponto e vrgula. Exemplo: <? if ($x == $x){ //aqui no precisa de ponto e vrgula echo 'com ponto e vrgula' ; //aqui precisa de ponto e vrgula } ?> Nomes de variveis

Toda varivel em PHP tem seu nome composto pelo caracter $ e uma string, que deve iniciar por uma letra ou o caracter _. PHP case sensitive, ou seja, as variveis $php e $PHP so diferentes. Por isso preciso ter muito cuidado ao definir os nomes das variveis. bom evitar os nomes em maisculas, pois como veremos mais adiante, o PHP j possui algumas variveis pr-definidas cujos nomes so formados por letras maisculas.

Comentrios Comentrios de uma linha: Marca como comentrio at o final da linha ou at o final do bloco de cdigo PHP - o que vier antes. Pode ser delimitado pelo caracter # ou por duas barras ( // ). Exemplo: <? echo teste; #isto um teste echo teste; //este teste similar ao anterior ?>

Comentrios de mais de uma linha: Tem como delimitadores os caracteres /* para o incio do bloco e */ para o final do comentrio. Se o delimitador de final de cdigo PHP ( ?> ) estiver dentro de um comentrio, no ser reconhecido pelo interpretador. Exemplos: <? echo teste; /* Isto um comentrio com mais de uma linha que funciona corretamente */ ?>

3. Tipos

Tipos Suportados

PHP suporta os seguintes tipos de dados: Inteiro Ponto flutuante String Array Objeto PHP utiliza checagem de tipos dinmica, ou seja, uma varivel pode conter valores de diferentes tipos em diferentes momentos da execuo do script. Por este motivo no necessrio declarar o tipo de uma varivel para us-la. O interpretador

PHP decidir qual o tipo daquela varivel, verificando o contedo em tempo de execuo. Ainda assim, permitido converter os valores de um tipo para outro desejado, utilizando o typecasting ou a funo settype (ver adiante).

Inteiros (integer ou long) Uma varivel pode conter um valor inteiro com atribuies que sigam as seguintes sintaxes: $php = 1234; $php = -234; $php = 0234; $php = 0x34; # inteiro positivo na base decimal # inteiro negativo na base decimal # inteiro na base octal-simbolizado pelo 0 # equivale a 156 decimal # inteiro na base hexadecimal(simbolizado # pelo 0x) - equivale a 52 decimal.

A diferena entre inteiros simples e long est no nmero de bytes utilizados para armazenar a varivel. Como a escolha feita pelo interpretador PHP de maneira transparente para o usurio, podemos afirmar que os tipos so iguais. Strings Strings podem ser atribudos de duas maneiras: a) utilizando aspas simples ( ' ) - Desta maneira, o valor da varivel ser exatamente o texto contido entre as aspas (com exceo de \\ e \' - ver tabela abaixo) b) utilizando aspas duplas ( " ) - Desta maneira, qualquer varivel ou caracter de escape ser expandido antes de ser atribudo. Exemplo: <? $teste = "Brasil"; $php = '---$teste--\n'; echo "$php"; ?> A sada desse script ser "---$teste--\n". <? $teste = "Brasil"; $php = "---$teste---\n";

echo "$php"; ?> A sada desse script ser "---Brasil--" (com uma quebra de linha no final). A tabela seguinte lista os caracteres de escape: Sintaxe \n \r \t \\ \$ \ \ Significado Nova linha Enter Tabulao horizontal A prpria barra ( \ ) O smbolo $ Aspa simples Aspa dupla

Arrays Arrays em PHP podem ser observados como mapeamentos ou como vetores indexados. Mais precisamente, um valor do tipo array um dicionrio onde os ndices so as chaves de acesso. Vale ressaltar que os ndices podem ser valores de qualquer tipo e no somente inteiros. Inclusive, se os ndices forem todos inteiros, estes no precisam formar um intervalo contnuo. Como a checagem de tipos em PHP dinmica, valores de tipos diferentes podem ser usados como ndices de array, assim como os valores mapeados tambm podem ser de diversos tipos. Exemplo: <? $cor[1] = vermelho; $cor[2] = verde; $cor[3] = azul; $cor[teste] = 1; ?> Equivalentemente, pode-se escrever: <? $cor = array(1 => vermelho, 2 => verde, 3 => azul, teste => 1); ?> Listas As listas so utilizadas em PHP para realizar atribuies mltiplas. Atravs de listas possvel atribuir valores que esto num array para variveis. Vejamos o

exemplo: Exemplo: list($a, $b, $c) = array(a, b, c); O comando acima atribui valores s trs variveis simultaneamente. bom notar que s so atribudos s variveis da lista os elementos do array que possuem ndices inteiros e no negativos. No exemplo acima as trs atribuies foram bem sucedidas porque ao inicializar um array sem especificar os ndices eles passam a ser inteiros, a partir do zero. Um fator importante que cada varivel da lista possui um ndice inteiro e ordinal, iniciando com zero, que serve para determinar qual valor ser atribudo. No exemplo anterior temos $a com ndice 0, $b com ndice 1 e $c com ndice 2. Vejamos um outro exemplo: $arr = array(1=>um,3=>tres,a=>letraA,2=>dois); list($a,$b,$c,$d) = $arr; Aps a execuo do cdigo acima temos os seguintes valores: $a == null $b == um $c == dois $d == tres Devemos observar que varivel $a no foi atribudo valor, pois no array no existe elemento com ndice 0 (zero). Outro detalhe importante que o valor tres foi atribudo varivel $d, e no a $b, pois seu ndice 3, o mesmo que $d na lista. Por fim, vemos que o valor letraA no foi atribudo a elemento algum da lista, pois seu ndice no inteiro. Os ndices da lista servem apenas como referncia ao interpretador PHP para realizar as atribuies, no podendo ser acessados de maneira alguma pelo programador. De maneira diferente do array, uma lista no pode ser atribuda a uma varivel, servindo apenas para fazer mltiplas atribuies atravs de um array. Objetos Um objeto pode ser inicializado utilizando o comando new para instanciar uma classe para uma varivel. Exemplo: class teste { function nada() { echo nada; }

} $php = new teste; $php -> nada(); A utilizao de objetos ser mais detalhada mais frente.

Booleanos

Introduzido no PHP 4, os valores true e false so ambos case insensitive (True, true, TRUE e truE significam todos o mesmo valor true). Os equivalentes a true e false, respectivamente, referentes aos demais tipos primitivos so os seguintes: Integers: 0 ; qualquer nmero no nulo Floats: 0.0 ; qualquer nmero no nulo Strings: o string vazio ; qualquer string no vazio Array: o array vazio ; qualquer array no vazio

Transformao de tipos

A transformao de tipos em PHP pode ser feita das seguintes maneiras: Coeres

Quando ocorrem determinadas operaes (+, por exemplo) entre dois valores de tipos diferentes, o PHP converte o valor de um deles automaticamente (coero). interessante notar que se o operando for uma varivel, seu valor no ser alterado. O tipo para o qual os valores dos operandos sero convertidos determinado da seguinte forma: Se um dos operandos for float, o outro ser convertido para float, seno, se um deles for integer, o outro ser convertido para integer. Exemplo: $php = 1; // $php a string 1 $php = $php + 1; // $php o integer 2 $php = $php + 3.7; // $php o double 5.7 $php = 1 + 1.5 // $php o double 2.5

Como podemos notar, o PHP converte string para integer ou double mantendo o valor. O sistema utilizado pelo PHP para converter de strings para nmeros o seguinte:

analisado o incio da string. Se contiver um nmero, ele ser avaliado. Seno, o valor ser 0 (zero); O nmero pode conter um sinal no incio (+ ou -); Se a string contiver um ponto em sua parte numrica a ser analisada, ele ser considerado, e o valor obtido ser double;

Se a string contiver um e ou E em sua parte numrica a ser analisada, o valor seguinte ser considerado como expoente da base 10, e o valor obtido ser double;

Exemplos: $php = 1 + $php = 1 + $php = 1 + $php = 1 + $php = 1 + $php = 1 +

10.5; -1.3e3; teste10.5; 10testes; " 10testes"; "+ 10testes";

// $php == 11.5 // $php == -1299 // $php == 1 // $php == 11 // $php == 11 // $php == 1

Transformao explcita de tipos

A sintaxe do typecast de PHP semelhante ao C: basta escrever o tipo entre parnteses antes do valor. Exemplo: $php = 15; // $php integer (15) $php = (double) $php // $php double (15.0) $php = 3.9 // $php double (3.9) $php = (int) $php // $php integer (3) // o valor decimal truncado Os tipos de cast permitidos so: (int), (integer) (string) (array) (object) // muda para integer; // muda para string; // muda para array; // muda para objeto. (real), (double), (float)// muda para float;

Com a funo settype

A funo settype converte uma varivel para o tipo especificado, que pode ser integer, double, string, array ou object. Exemplo: $php = 15; settype($php,double)

// $php integer // $php double

4. Constantes Constantes pr-definidas O PHP possui algumas constantes pr-definidas, indicando a verso do PHP, o Sistema Operacional do servidor, o arquivo em execuo, e diversas outras informaes. Para ter acesso a todas as constantes pr-definidas, pode-se utilizar a funo phpinfo(), que exibe uma tabela contendo todas as constantes pr-definidas, assim como configuraes da mquina, sistema operacional, servidor http e verso do PHP instalada. Definindo constantes Para definir constantes utiliza-se a funo define. Uma vez definido, o valor de uma constante no poder mais ser alterado. Uma constante s pode conter valores escalares, ou seja, no pode conter nem um array nem um objeto. A assinatura da funo define a seguinte: int define(string nome_da_constante, mixed valor); A funo retorna true se for bem-sucedida. Veja um exemplo de sua utilizao a seguir: define ("pi", 3.1415926536); $circunf = 2*pi*$raio;

5. Operadores

Aritmticos S podem ser utilizados quando os operandos so nmeros (integer ou float). Se forem de outro tipo, tero seus valores convertidos antes da realizao da operao.

+ * / %

adio subtrao multiplicao diviso mdulo

de strings

S h um operador exclusivo para strings: . concatenao

de atribuio

Existe um operador bsico de atribuio e diversos derivados. Sempre retornam o valor atribudo. No caso dos operadores derivados de atribuio, a operao feita entre os dois operandos, sendo atribudo o resultado para o primeiro. A atribuio sempre por valor, e no por referncia. = += -= *= /= %= .= atribuio simples atribuio com adio atribuio com subtrao atribuio com multiplicao atribuio com diviso atribuio com mdulo atribuio com concatenao

Exemplo: $a = 7; $a += 2; // $a passa a conter o valor 9 bit a bit

Comparam dois nmeros bit a bit. & | ^ ~ << e lgico ou lgico ou exclusivo no (inverso) shift left

>> Lgicos

shift right

Utilizados para inteiros representando valores booleanos and or xor ! && || e lgico ou lgico ou exclusivo no (inverso) e lgico ou lgico

Existem dois operadores para e e para ou porque eles tm diferentes posies na ordem de precedncia.

Comparao As comparaes so feitas entre os valores contidos nas variveis, e no as referncias. Sempre retornam um valor booleano. == != < > <= >= igual a diferente de menor que maior que menor ou igual a maior ou igual a

Expresso condicional

Existe um operador de seleo que ternrio. Funciona assim: (expressao1)?(expressao2):( expressao3) O interpretador PHP avalia a primeira expresso. Se ela for verdadeira, a expresso retorna o valor de expresso2. Seno, retorna o valor de expresso3.

Incremento e Decremento

++

incremento

--

decremento

Podem ser utilizados de duas formas: antes ou depois da varivel. Quando utilizado antes, retorna o valor da varivel antes de increment-la ou decrement-la. Quando utilizado depois, retorna o valor da varivel j incrementado ou decrementado. Exemplos: $a = $b = 10; // $a e $b recebem o valor 10 $c = $a++; // $c recebe 10 e $a passa a ter 11 $d = ++$b; // $d recebe 11, valor de $b j incrementado 6. Estruturas de Controle As estruturas que veremos a seguir so comuns para as linguagens de programao imperativas, bastando, portanto, descrever a sintaxe de cada uma delas, resumindo o funcionamento.

Blocos Um bloco consiste de vrios comandos agrupados com o objetivo de relacionlos com determinado comando ou funo. Em comandos como if, for, while, switch e em declaraes de funes blocos podem ser utilizados para permitir que um comando faa parte do contexto desejado. Blocos em PHP so delimitados pelos caracteres { e }. A utilizao dos delimitadores de bloco em uma parte qualquer do cdigo no relacionada com os comandos citados ou funes no produzir efeito algum, e ser tratada normalmente pelo interpretador. Exemplo: if ($x == $y) comando1; comando2; Para que comando2 esteja relacionado ao if preciso utilizar um bloco: if ($x == $y){ comando1; comando2; }

Comandos de seleo

Tambm chamados de condicionais, os comandos de seleo permitem executar comandos ou blocos de comandos com base em testes feitos durante a execuo. if O mais trivial dos comandos condicionais o if. Ele testa a condio e executa o comando indicado se o resultado for true (valor diferente de zero). Ele possui duas sintaxes: if (expresso) comando; if (expresso){ comando1; comando2; comando3; comando4; comando5; comando1; comando2; comando3; }

if (expresso): comando; ... comando; endif; Para incluir mais de um comando no if da primeira sintaxe, preciso utilizar um bloco, demarcado por chaves. O else um complemento opcional para o if. Se utilizado, o comando ser executado se a expresso retornar o valor false (zero). Suas duas sintaxes so: if (expresso) comando; else comando; if (expresso): comando; ... comando; else comando;

... endif;

comando;

A seguir, temos um exemplo do comando if utilizado com else: if ($a > $b) $maior = $a; else $maior = $b; O exemplo acima coloca em $maior o maior valor entre $a e $b Em determinadas situaes necessrio fazer mais de um teste, e executar condicionalmente diversos comandos ou blocos de comandos. Para facilitar o entendimento de uma estrutura do tipo: if (expressao1) comando1; else if (expressao2) comando2; else if (expressao3) comando3; else comando4; Foi criado o comando, tambm opcional elseif. Ele tem a mesma funo de um else e um if usados seqencialmente, como no exemplo acima. Num mesmo if podem ser utilizados diversos elseifs, ficando essa utilizao a critrio do programador, que deve zelar pela legibilidade de seu script. O comando elseif tambm pode ser utilizado com dois tipos de sintaxe. Em resumo, a sintaxe geral do comando if fica das seguintes maneiras: if (expressao1) comando; [ elseif (expressao2) comando; ] [ else comando; ] if (expressao1) : comando; ... comando;

[ elseif (expressao2) comando; ... comando; ] [ else comando; ... comando; ] endif;

switch O comando switch atua de maneira semelhante a uma srie de comandos if na mesma expresso. Freqentemente o programador pode querer comparar uma varivel com diversos valores, e executar um cdigo diferente a depender de qual valor igual ao da varivel. Quando isso for necessrio, deve-se usar o comando switch. O exemplo seguinte mostra dois trechos de cdigo que fazem a mesma coisa, sendo que o primeiro utiliza uma srie de ifs e o segundo utiliza switch: if ($i == 0) print i igual a zero; elseif ($i == 1) print i igual a um; elseif ($i == 2) print i igual a dois; switch ($i) { case 0: break; case 1: break; case 2: } break; print i igual a um; print i igual a dois;

print i igual a zero;

importante compreender o funcionamento do switch para no cometer enganos. O comando switch testa linha a linha os cases encontrados, e a partir do momento que encontra um valor igual ao da varivel testada, passa a executar todos os comandos seguintes, mesmo os que fazem parte de outro teste, at o fim do bloco. por isso usa-se o comando break, quebrando o fluxo e fazendo com que o cdigo seja executado da maneira desejada. Veremos mais sobre o break mais adiante. Veja o exemplo:

switch ($i) { case 0: case 1: case 2: }

print i igual a zero; print i igual a um; print i igual a dois;

No exemplo acima, se $i for igual a zero, os trs comandos print sero executados. Se $i for igual a 1, os dois ltimos print sero executados. O comando s funcionar da maneira desejada se $i for igual a 2. Em outras linguagens que implementam o comando switch, ou similar, os valores a serem testados s podem ser do tipo inteiro. Em PHP permitido usar valores do tipo string como elementos de teste do comando switch. O exemplo abaixo funciona perfeitamente:

switch ($s) { case casa: print A casa amarela; case arvore: print a rvore bonita; case lmpada: print Joo apagou a lmpada; }

comandos de repetio while O while o comando de repetio (lao) mais simples. Ele testa uma condio e executa um comando, ou um bloco de comandos, at que a condio testada seja falsa. Assim como o if, o while tambm possui duas sintaxes alternativas: while (<expresso>) <comando>; while (<expresso>){ <comando1>; <comando2>; <comando3>; <comando4>;

<comando5>; <comando3>; }

while (<expresso>): <comando>; ... <comando>; endwhile; A expresso s testada a cada vez que o bloco de instrues termina, alm do teste inicial. Se o valor da expresso passar a ser false no meio do bloco de instrues, a execuo segue at o final do bloco. Se no teste inicial a condio for avaliada como false, o bloco de comandos no ser executado. O exemplo a seguir mostra o uso do while para imprimir os nmeros de 1 a 10: $i = 1; while ($i <=10) print $i++;

do... while O lao do...while funciona de maneira bastante semelhante ao while, com a simples diferena que a expresso testada ao final do bloco de comandos. O lao do...while possui apenas uma sintaxe, que a seguinte: do { ...

<comando>

<comando> } while (<expresso>); O exemplo utilizado para ilustrar o uso do while pode ser feito da seguinte maneira utilizando o do... while:

$i = 0; do { print ++$i; } while ($i < 10);

for O tipo de lao mais complexo o for. Para os que programam em C, C++ ou Java, a assimilao do funcionamento do for natural. Mas para aqueles que esto acostumados a linguagens como Pascal, h uma grande mudana para o uso do for. As trs sintaxes permitidas so: for (<inicializao>;<condio>;<incremento ou decremento>) <comando>; for (<inicializao>;<condio>;<incremento ou decremento>){ <comando>; <comando>; <comando>; <comando>; <comando>; } for (<inicializao>;<condio>;<incremento ou decremento>): <comando>; ... <comando>; endfor; As trs expresses que ficam entre parnteses tm as seguintes finalidades: Inicializao: comando ou seqncia de comandos a serem realizados antes do inicio do lao. Serve para inicializar variveis. Condio: Expresso booleana que define se os comandos que esto dentro do lao sero executados ou no. Enquanto a expresso for verdadeira (valor diferente de zero) os comandos sero executados. Incremento: Comando executado ao final de cada execuo do lao. Um comando for funciona de maneira semelhante a um while escrito da seguinte forma: <inicializao> while (<condio>) { comandos ... <incremento> }

Quebra de fluxo Break O comando break pode ser utilizado em laos de do, for e while, alm do uso j visto no comando switch. Ao encontrar um break dentro de um desses laos, o interpretador PHP para imediatamente a execuo do lao, seguindo normalmente o fluxo do script. while ($x > 0) { ... if ($x == 20) { echo erro! x = 20; break; ... } No trecho de cdigo acima, o lao while tem uma condio para seu trmino normal ($x <= 0), mas foi utilizado o break para o caso de um trmino no previsto no incio do lao. Assim o interpretador seguir para o comando seguinte ao lao.

Continue O comando continue tambm deve ser utilizado no interior de laos, e funciona de maneira semelhante ao break, com a diferena que o fluxo ao invs de sair do lao volta para o incio dele. Vejamos o exemplo: for ($i = 0; $i < 100; $i++) { if ($i % 2) continue; echo $i ; } O exemplo acima uma maneira ineficiente de imprimir os nmeros pares entre 0 e 99. O que o lao faz testar se o resto da diviso entre o nmero e 2 0. Se for diferente de zero (valor lgico true) o interpretador encontrar um continue, que faz com que os comandos seguintes do interior do lao sejam ignorados, seguindo para a prxima iterao.

Você também pode gostar