Curso POO PHP Estruturas de control

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

Estruturas de control

En PHP os guións constrúense sobre a base de sentenzas. Utilizando chaves, podes agrupar as sentenzas en conxuntos, que se comportan coma se fosen unha única sentenza.

Para definir o fluxo dun programa en PHP, ao igual que na maioría de linguaxes de programación, hai sentenzas para dous tipos de estruturas de control: sentenzas condicionais, que permiten definir as condicións baixo as que debe executarse unha sentenza ou un bloque de sentenzas; e sentenzas de bucle, coas que podes definir se unha sentenza ou conxunto de sentenzas se repite ou non, e baixo que condicións.

Ademais, en PHP podes usar tamén (aínda que non é recomendable) a sentenza goto, que che permite saltar directamente a outro punto do programa que indiques mediante unha etiqueta.

<?php
goto fin;
echo 'Non se executa';
 
fin:
echo 'Chegamos ao final';
?>

Estructuras condicionais

A sentenza if permite definir unha expresión para executar ou non a sentenza ou conxunto de sentenzas seguinte. Se a expresión se avalía a true (verdadeiro), a sentenza execútase. Se se avalía false (falso), non se executará.

Cando o resultado da expresión sexa false, podes utilizar else para indicar unha sentenza ou grupo de sentenzas a executar nese caso. Outra alternativa a else é utilizar elseif e escribir unha nova expresión que comezará un novo condicional.

<?php
if ($a > 0) {
   echo "\$a é positivo";
   echo "\$a ten o valor $a";
} elseif ($a == 0) {
   echo "\$a é negativo";
   echo "\$a ten o valor $a";
} else 
   echo "\$a é igual a 0";
?>

Cando a sentenza if, elseif ou else actúe sobre unha única sentenza, non será necesario usar chaves. Terás que usar chaves para formar un conxunto de sentenzas sempre que queiras que o condicional actúe sobre máis dunha sentenza.

A sentenza switch é similar a enlazar varias sentenzas if comparando unha mesma variable con diferentes valores. Cada valor vai nunha sentenza case. Cando se encontra unha coincidencia, comezan a executarse as sentenzas seguintes ata que remata o bloque switch, ou ata que se encontra unha sentenza break. Se non existe coincidencia co valor de ningún case, execútanse as sentenzas do bloque default, en caso de que exista.

<?php
switch ($a) {
    case 0:
        echo "\$a é igual a 0";
        break;
    case 1:
    case 3:
    case 5:
    case 7:
    case 9:
        echo "\$a é impar positivo menor de 10";
        break;
    default:
        echo "\$a ten o valor $a";
}
?>

Tamén temos a posibilidade de crear expresións condicionais sinxelas empregando o operador ternario ?.

$resultado = expr1 ? expr2 : expr3;

Cando expr1 é igual a true, o resultado é igual a expr2; en caso contrario o resultado é igual a expr3. Por exemplo:

$resultado = $divisor == 0 ? "NaN" : $dividendo / $divisor;

Dende PHP 5.3 é posible omitir o segundo operando. Neste caso, cando expr1 é igual a true, o resultado é igual a expr1. Emprégase principalmente para comprobar se un valor é nulo ou vacío, e ofrecer un valor alternativo. Por exemplo:

$cidade = $_REQUEST["cidade"] ?: "Santiago de Compostela";

Bucles

Empregando while podes definir un bucle que se executa mentres se cumpra unha expresión. A expresión avalíase antes de comezar cada execución do bucle.

<?php
$a=0;
while ($a<10) {
    $a++;
    echo "\$a ten o valor $a";
}
?>

do / while é un bucle similar ao anterior, pero a expresión avalíase ao final, co cal se asegura que a sentenza ou conxunto de sentenzas do bucle se executan polo menos unha vez.

<?php
$a=0;
do {
    echo "\$a ten o valor $a";
    $a++;
} while ($a<10)
?>

Os bucles for son os máis complexos de PHP. Ao igual que os da linguaxe C, compóñense de tres expresións:

for (expr1; expr2; expr3) sentenza ou conxunto de sentenzas;

  • A primeira expresión, expr1, execútase só unha vez ao comezo do bucle.
  • A segunda expresión, expr2, avalíase para saber se se debe executar ou non a sentenza ou conxunto de sentenzas. Se o resultado o false, o bucle remata.
  • Se o resultado é true, execútanse as sentenzas e ao finalizar execútase a terceira expresión, expr3, e vólvese avaliar expr2 para decidir se se volve executar ou non o bucle.
<?php
for($a=0; $a<10; $a++)
    echo "\$a ten o valor $a";
?>

Podes aniñar calquera dos bucles anteriores en varios niveis. Tamén podes usar as sentenzas break, para saír do bucle, e continue, para omitir a execución das sentenzas restantes e volver á comprobación da expresión respectivamente.

Sintaxe alternativa das estruturas de control

Calquera das estruturas de control anteriores excepto do-while admite unha sintaxe alternativa, que consiste en cambiar a chave de apertura polo caracter dous puntos ":", e a chave de peche pola palabra clave endif, endswitch, endwhile ou endfor dependendo da estrutura que esteamos a empregar.

<?php
$a=0;
$a=0;
while ($a<10):
    $a++;
    echo "\$a ten o valor $a";
endwhile;
?>

Finalizar a execución

En PHP temos unha construcción da linguaxe, exit (ou o seu alias die), que se emprega cando se produce un erro grave para finalizar a execución do script actual.

Pode pasárselle como parámetro o valor de saída do script (un número enteiro) ou a mensaxe que queremos que se amose antes de rematar (unha cadea de texto). Se non leva parámetro, non é necesarios empregar parénteses na chamada.

--Víctor Lourido 14:43 25 jun 2013 (CEST)