Post on 29-Jun-2020
PHP Escopo de variáveis, expressões,
operadores e estruturas de controle
Prof. Gláucya Boechatgcbcht@gmail.com
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( );
?>
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();
?>
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;?>
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;
?>
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++;}
?>
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;
}?>
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}";
?>
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;
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
?>
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;
?>
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”; }
?>
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;
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;
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”;
} */
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;
?>
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
18
Operadores AritméticosOperadores Aritméticos
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!”
?>
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.
?>
21
Operador Bit-a-bitOperador Bit-a-bit
● O operador bit-a-bit atua nos números binários
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)?>
23
Operadores de ComparaçãoOperadores de Comparação
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;}
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”?>
26
Operadores de Incremento/Decremento
Operadores de Incremento/Decremento
● Operadores de pré e pós-incremento e decremento
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”;
?>
28
Operadores LógicosOperadores Lógicos
$b = 1;If($b == 0) or ($b < 3) { // TRUE { (FALSE) ou (TRUE) }
$a= 1; }
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!"
30
Operadores de ArraysOperadores de Arrays
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"}
32
Operadores de ExecuçãoOperadores de Execução
● Executa script Shell
<?$saida = `ls -l`;
echo “<pre>”.$saida.”</pre>”;
?>
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];
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”?>
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
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”;
}
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”;
}
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
}
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”;
}
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”
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;
}
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;}
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;
44
Comandos de RepetiçãoComandos de Repetição
● While
while (condição){bloco de comandos;
}
$i=0;
while ($i < 10) {
echo "i = ".$i++;
}
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)
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;
}
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;
}
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;
}
}
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;
}
}
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;