PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de...

50
PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat [email protected]

Transcript of PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de...

Page 1: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

PHP Escopo de variáveis, expressões,

operadores e estruturas de controle

Prof. Gláucya [email protected]

Page 2: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

2

Escopo de variáveisEscopo de variáveis

● O escopo de uma variável é o contexto onde ela foi definida– Escopo global e local

<?php

$a = 1; /* escopo global */

function Teste()

{ $b=2; /* escopo local */

echo $b;

}

Teste( );

?>

Page 3: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

3

Escopo de variáveisEscopo de variáveis

● Variável local

<?php

$a = 1; /* escopo global */

function Teste(){

echo $a; /* referencia uma variável do escopo local (não definida) */}Teste();

?>

Page 4: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

4

Escopo de variáveisEscopo de variáveis

● Usando a palavra chave global<?php$a = 1;$b = 2;

function Soma(){

global $a, $b; /* referencia as variáveis globais */

$b = $a + $b;}

Soma();echo $b;?>

Page 5: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

5

Escopo de variáveisEscopo de variáveis

● Usando o array $GLOBALS– O nome da variável global é a chave do array

<?php$a = 1;$b = 2;function Soma(){

$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];}Soma();echo $b;

?>

Page 6: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

6

Escopo de variáveisEscopo de variáveis

● Variáveis estáticas– Uma variável estática existe somente no escopo local

da função,

– Ela não perde seu valor quando o nível de execução do programa deixa o escopo

<?phpfunction Teste(){ static $a = 0; echo $a; $a++;}

?>

<?php//Essa função é inútilfunction Teste(){ $a = 0; echo $a; $a++;}

?>

Page 7: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

7

Escopo de variáveisEscopo de variáveis

● Declaração de variáveis estáticas

<?phpfunction Teste(){ static $int = 0; // correto

static $int = 1+2; // errado (é uma expressão) static $int = sqrt(121); // errado (é uma expressão também) $int++; echo $int;

}?>

Page 8: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

8

Variáveis variáveisVariáveis variáveis

● Uma variável variável pega o valor de uma variável e a trata como o nome de uma variável.

<?php

$a = 'hello';

$$a = "world";

/* Produz a mesma saída que echo "$a $hello" */

echo "$a ${$a}";

?>

Page 9: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

9

ExpressõesExpressões● Tudo o que tem valor é uma expressão

<?php

function foo(){

Return 10;}

$a=foo(); // é a mesma coisa que escrever $a=10 ?>

$a=5;$b=$a; // comporta da mesma forma que $b=5

$b = ($a = 15); $b = $a = 15; // é como escrever $a = 15; $b=15;

Page 10: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

10

ExpressõesExpressões

● Operadores de incremento e decremento– Pré-incremento

● Incrementa o valor da variável em um

++$variavel

– Pré-decremento● Decrementa o valor da viável em um

--$variavel

<?php

$a=3;$b = --$a; // $b = 2

?>

Page 11: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

11

ExpressõesExpressões● Operadores de incremento e decremento

– Pós-incremento● Retorna o valor da variável, e então incrementa o valor da

variável em um

++$variavel

– Pós-decremento● Retorna o valor da variável, e então decrementa o valor da

variável em um

--$variavel

<?php

$a=1;$b = $a++; // $b = 1;

?>

Page 12: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

12

ExpressõesExpressões● Expressões de comparação

– Retorna FALSE ou TRUE● > , >= , < , <= , ● == (Igual)● != (Diferente)● === (É do mesmo tipo) ● !== (Não é do mesmo tipo)

– Exemplo

<?php

$a=1; $b=2if($a == $b){

Echo “a igual a b”; }

?>

Page 13: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

13

ExpressõesExpressões

● Soma $c= $a + $b;

$a += 3; // $a = $a + 3;

● Subtração $c= $a - $b;

$a -= 1; $a = $a – 1;

● Multiplicação $c= $a * $b;

$a *= 5; $a = $a * 5;

● Divisão $c= $a / $b;

$a /= 2; $a = $a / 2;

Page 14: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

14

ExpressõesExpressões

● Bit-a-bit $b = 10; //10 (1010 binário);

$a = $b ^ '15'; //15 (1111) $a = 10 (1010)

● Concatenação de strings $b = “Bom ”;

$a = $b . “ Dia!”; //$a = “Bom Dia!”;

$a .= $b; //$a = $a .$b;

Page 15: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

15

ExpressõesExpressões

● Operador condicional ternário condicao ? expressão 1 : expressão 2

<?php$a = 1;$b = 2;

$c = ($a!=$b) ? “diferente”; “igual”; // $c = “diferente”?>

/*

if($a != $b){$c = “diferente”;

}else{$c = “igual”;

} */

Page 16: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

16

ExemploExemplo<?phpfunction double($i){ return $i*2;}$b = $a = 5; $c = $a++;

$b *=2; $e = $d = --$b;

$f = double($d++);

$g = double(++$e); $h = $g += 10;

$i = ($d > 4) ? $d+2 : $d*3;

?>

Page 17: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

17

OperadoresOperadores

● Operadores Aritméticos

● Operadores de Atribuição

● Operador Bit-a-bit

● Operadores de Comparação

● Operadores de Incremento/Decremento

● Operadores Lógicos

● Operadores de String

● Operadores de Arrays

● Operadores de Execução

● Operadores de controle de erro

Page 18: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

18

Operadores AritméticosOperadores Aritméticos

Page 19: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

19

Operadores de AtribuiçãoOperadores de Atribuição

● Operador de atribuição “ = ” – Exemplo

<?php$a = 10; // O valor de $a é 10$c = ($b = 3) + 2; // $c é igual a 5 e $b é igual a 3

$a += 5; // Configura $a para 15

$d = “Bom ”;$d .= “ Dia!”; // Configura $b para “Bom Dia!”

?>

Page 20: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

20

Operadores de AtribuiçãoOperadores de Atribuição

● Atribuições por referência – Ambas as variáveis apontando para os mesmos dado

$variavel = &$outra_variavel;

<?php

$a = 10; // O valor de $a é 10$b = &$a; // $b aponta para $a.

?>

Page 21: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

21

Operador Bit-a-bitOperador Bit-a-bit

● O operador bit-a-bit atua nos números binários

Page 22: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

22

Operador Bit-a-bitOperador Bit-a-bit

● Exemplo<?php

$a = "120"; // $a = 120 ( binário 1111000)

$b = $a >> 3; // $b = 15 ( 0001111)

$c = $a << 3; // $c = 960 ( 1111000000)

echo 'a = '.$a.', b = '.$b.', c '.$c; // a = 120, b = 15, c = 960

$d = “15” & 10; //15 (1111) , 10 (1010)

echo $d; //$d = 10 (1010)?>

Page 23: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

23

Operadores de ComparaçãoOperadores de Comparação

Page 24: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

24

Operadores de ComparaçãoOperadores de Comparação● Comparar um inteiro com uma string

– a string é convertida para um número.

● Comparar 2 strings numéricas,

– elas serão comparadas como inteiras.

● Estas regras também se aplicam ao comando switch.

$b = “1”;If(“1” == “01”){ // 1 ==1

$a= 1; }switch ("a") {

case 1: echo "1";

break;case "2": echo "2";

break;}

Page 25: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

25

Operadores de ComparaçãoOperadores de Comparação

● Operador Ternário ?:– (expr1) ? (expr2) : (expr3)

● Se (expr1) for (TRUE), então expr2 é avaliada● Caso contrário, expr3 é avaliada.

<?php$a = 1;$b = 2;

$c = ($a!=$b) ? “diferente”; “igual”; // $c = “diferente”?>

Page 26: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

26

Operadores de Incremento/Decremento

Operadores de Incremento/Decremento

● Operadores de pré e pós-incremento e decremento

Page 27: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

27

Operadores de Incremento/Decremento

Operadores de Incremento/Decremento

● Exemplo<?php

$a = 5;Echo “Deve ser 5: ”.$a++.”\n”;Echo “Deve ser 6: ”.$a.”\n”;

$a = 5;Echo “Deve ser 6: ”.$++a.”\n”;Echo “Deve ser 6: ”.$a.”\n”;

$a = 5;Echo “Deve ser 5: ”.$a--.”\n”;Echo “Deve ser 4: ”.$a.”\n”;

$a = 5;Echo “Deve ser 4: ”.--$a.”\n”;Echo “Deve ser 4: ”.$a.”\n”;

?>

Page 28: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

28

Operadores LógicosOperadores Lógicos

$b = 1;If($b == 0) or ($b < 3) { // TRUE { (FALSE) ou (TRUE) }

$a= 1; }

Page 29: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

29

Operadores de StringOperadores de String

● Operador de concatenação '.'

● Operador de atribuição de concatenação '.='

$a = "Olá "; $b = $a . "mundo!"; // $b contém “Olá mundo!”

$a = "Olá "; $a .= "mundo!"; // $a contém "Olá mundo!"

Page 30: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

30

Operadores de ArraysOperadores de Arrays

Page 31: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

31

Operadores de ArraysOperadores de Arrays<?php

$a = array("a" => "maçã", "b" => "banana");$b = array("a" =>"pêra", "b" => "framboesa", "c" => "morango");

$c = $a + $b; // União de $a e $becho "União de \$a e \$b: \n";var_dump($c);

$d = $b + $a; // União de $b e $aecho "União de \$b e \$a: \n";var_dump($d);

?>

União de $a e $b:array(3) { ["a"]=> string(5) "maçã" ["b"]=> string(6) "banana" ["c"]=> string(6) "morango"}

União de $b e $a:array(3) { ["a"]=> string(4) "pêra" ["b"]=> string(10) "framboesa" ["c"]=> string(6) "morango"}

Page 32: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

32

Operadores de ExecuçãoOperadores de Execução

● Executa script Shell

<?$saida = `ls -l`;

echo “<pre>”.$saida.”</pre>”;

?>

Page 33: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

33

Operadores de controle de erroOperadores de controle de erro

● Utiliza o prefixo de controle de erro “@” antes de uma expressão– Ignora qualquer mensagem de erro que possa ser

gerada pela expressão.

// você não receberá nenhum aviso se a chave $key não existir.

// você não receberá nenhum aviso se a chave $key não existir.$valor = @$vetor[$chave];

Page 34: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

34

ExercíciosExercícios

<?php$a = 1;$b = 2;

echo (true?'true':false?'t':'f');

echo ((true ? 'true' : 'false') ? 't' : 'f');

$c = ($a!=$b) ? “diferente”; “igual”; // $c = “diferente”?>

Page 35: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

35

Estruturas de ControleEstruturas de Controle

● if● else● elseif/else if● break● continue● switch● declare● return

● while● do-while● for● foreach● require● include● require_once● include_once● goto

Page 36: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

36

Comandos de SeleçãoComandos de Seleção

● Seleção simples if

if(expressão) {

bloco de comandos;

}

$a=1; $b=2

if($a == $b){Echo “a igual a b”;

}

Page 37: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

37

Comandos de SeleçãoComandos de Seleção● Seleção composta if-else

if(expressão) {

bloco de comandos do if

}else{

bloco de comandos do else

}

$a=1; $b=2

if($a == $b){Echo “a igual a b”;

}elseEcho “a diferente de b”;

}

Page 38: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

38

Comandos de SeleçãoComandos de Seleção

● Seleção composta elseif

if(expressão) {

bloco de comandos do if

}elseif{

bloco de comandos do elseif

}else{

bloco de comandos do else

}

Page 39: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

39

Comandos de SeleçãoComandos de Seleção

● Seleção composta elseif– Exemplo

$a=1; $b=2

if($a == $b){Echo “a = b”;

}elseif($a > $b)Echo “a > b”;

}else{Echo “a < b”;

}

Page 40: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

40

Operadores de ComparaçãoOperadores de Comparação

● Operador Ternário ?:– (expr1) ? (expr2) : (expr3)

● Se (expr1) for (TRUE), então expr2 é avaliada● Caso contrário, expr3 é avaliada.

$a = 1;$b = 2;

$c = ($a!=$b) ? “diferente”; “igual”; // $c = “diferente”

Page 41: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

41

Comandos de SeleçãoComandos de Seleção● Seleção múltiplas switch

– Compara uma variável com diversos valores

switch (expressão){

case num1:

bloco de comandos do caso 1;

break;

…default:

bloco de comandos do default;

break;

}

Page 42: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

42

Comandos de SeleçãoComandos de Seleção

● Seleção múltiplas switch– Exemplo

$a = “c”;

switch ($a) {case “a”: echo "a = 1";

break;case "b": echo "a = 2";

break; default:

echo "a = 2"; break;}

Page 43: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

43

Comandos de RepetiçãoComandos de Repetição

● While– Executa um bloco de comandos até a condição

seja atendida.

while (condição):bloco de comandos;

endwhile;$i=0;

while ($i < 10):

echo "\n i = ".$i;$i++;

endwhile;

Page 44: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

44

Comandos de RepetiçãoComandos de Repetição

● While

while (condição){bloco de comandos;

}

$i=0;

while ($i < 10) {

echo "i = ".$i++;

}

Page 45: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

45

Comandos de RepetiçãoComandos de Repetição

● do-while– A condição é testada no final do bloco de comandos,

do (condição){bloco de comandos;

}while

$i=0;

do {

echo "\n i = ".$i;$i++;

}while($i > 10)

Page 46: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

46

Comandos de RepetiçãoComandos de Repetição

● for– Executa um bloco de comandos por um número

definido de vezes.

for (valor inicial; condição; incremento){bloco de comandos;

}

for($i=1; $i<10; $i++){

echo "\n i = ".$i;

}

Page 47: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

47

Comandos de RepetiçãoComandos de Repetição

● foreach– Percorre os elementos de um array

foreach ($nome_array as $valor){bloco de comandos;

}$vetor = array(2, 4, 6)

foreach($vetor as &$valor){

$valor *= 2;

}

Page 48: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

48

Comando breakComando break

● Encerra a execução dos comandos– for, foreach, while, do-while ou switch

– Este encerra o laço e vai a primeira linha após o laço

$vetor = array(2, 4, 6)

foreach($vetor as &$valor){

if($valor == 4){break;

}

}

Page 49: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

49

Comando continueComando continue

● Ignora o restante das instruções abaixo do comando continue dentro do laço, e – obriga a execução a retornar para o início do laço.

$vetor = array(2, 4, 6)

foreach($vetor as &$valor){

if($valor == 4){continue;

}

}

Page 50: PHP Escopo de variáveis, expressões, operadores e ...glaucya/ifsp/LPI/PHP... · PHP Escopo de variáveis, expressões, operadores e estruturas de controle Prof. Gláucya Boechat

50

Comando gotoComando goto● Comando usado para saltar para outro ponto

no programa.

goto rotulo;

rotulo: comandos;

$a = 3;

if($a == 3){$a++;

goto fim}

fim: $a *=4;