Tutorial PHP: Estruturas de Controle de Fluxo Condicionais

Tutorial PHP: Estruturas de Controle de Fluxo Condicionais

As linguagens de programação possuem algumas características em comum, dentre elas variáveis (vistas neste post) e estruturas de controle de fluxo. Para que o post não fique muito longo, iremos dividi-lo em duas partes. Neste post veremos estruturas de controle de fluxo condicionais, que são responsáveis pela lógica que utilizaremos em nossos programas, sendo assim são uma parte muito importante da programação.

Estruturas de Controle de Fluxo

Estruturas de controle de fluxo são responsáveis pela forma como o fluxo do programa será executado, ou seja, são nelas que colocamos condições para uma ou outra rotina ser executada, ou rodarmos determinada rotina repetidas vezes dada uma determinada condição de parada, isso permite dinamismo ao programa, sem estruturas de controle não teríamos como controlar a execução de nosso programa de modo a determinar quais ações devem ser executadas em determinados casos, ou ficaria muito complicado representar uma tabela de um banco de dados, por exemplo, sendo assim, uma linguagem depende muito das estruturas de controle.

Controles de Fluxo Condicionais

Os controles de fluxo condicionais são responsáveis pela execução de trechos de código ou rotinas diferentes a depender de condições estabelecidas nas lógicas de negócio dos nossos scripts.

No PHP temos as seguintes estruturas de controle:

  • if, elseif, else
  • switch
  • Operadores ternários

Os quais veremos detalhadamente a seguir.

Estrutura IF

O comando if é utilizado para verificarmos determinada condição e, caso esta condição seja verdadeira, executarmos determinado código, vejamos o exemplo a seguir:

<?php
if(1 == 2) {
    echo 'Tem algo errado que não está certo!';
}

 

No exemplo acima o comando echo nunca será executado, pois dissemos ao php que ele só deve ser executado caso a condição 1 == 2 (se caso 1 for igual a 2) seja verdadeira. Se fôssemos substituir o comando if por uma palavra de nosso dia a dia, seria a palavra SE, se utilizarmos o exemplo acima, poderíamos dizer o seguinte:

SE um for igual a dois mostre a frase “Tem algo errado que não está certo!”

A estrutura IF na realidade verifica o tipo de dados booleano, ou seja, ela interpreta se o valor entre parênteses é verdade ou falso (true ou false), para isso podemos fazer uso massivo dos operadores de comparação, e dos operadores lógicos da linguagem, os quais veremos no próximo post da série.

O comando IF pode ser utilizado de três formas distintas:

if (condição) // comando único;


if (condição) {
    // Bloco de código
}


if (condição):
    // Bloco de código
endif;

 

As chaves podem ser omitidas, apesar de não ser recomendável, quando dentro do if só existir um comando a ser executado, por exemplo:

<?php
if (1 == 2)
    echo 'Tem algo errado aqui!';

 

O if utilizando as chaves ( { e } ) é recomendado quando o bloco de códigos pertencente a este IF contiver somente comandos PHP, por exemplo:

<?php
// Resolução de uma equação de segundo grau
$delta = $b**2 - 4*$a*c;

if ($delta > 0) {
    $x1 = (-$b + sqrt($delta))/4*$a;
    $x2 = (-$b - sqrt($delta))/4*$a;
}

 

O if utilizando “:” e endif; é recomendado para quando dentro do if contiver, além de código PHP, também código HTML, nestes casos os códigos tendem a ficar maiores, e usando esta sintaxe temos uma visibilidade maior de onde começa e onde acaba o bloco IF. Por exemplo:

<?php
// Rotina qualquer que traga dados de um aluno do banco de dados
$aluno = AlunoRepository::getInfo(1);

if (aluno): ?>
    <p><strong>Nome: </strong><?= $aluno->getNome(); ?></p>
    <p><strong>Data de nascimento: </strong><?= $aluno->getDataNascimento()->format('d/m/Y'); ?></p>
    <p><strong>Telefone: </strong><?= $aluno->getTelefone(); ?></p>
    ...
    <?php
endif;

 

Se notarmos no exemplo acima, veremos que esse bloco if pode ficar muito grande, utilizando as sintaxe que faz uso do endif;, conseguimos visualizar melhor onde nosso if termina sem confundirmos com as tags html.

Else

Se o IF é o SE, o else é o Senão, ou seja, é a instrução que será executada caso a condição verificada no IF não seja verdadeira, vamos ao exemplo:

<?php
if (1 == 2) {
    echo 'Tem algo errado aqui!';
} else {
    echo 'Tudo certo!';
}

 

No exemplo acima, ao contrário do primeiro, onde não era mostrado nada, neste teríamos a mensagem ‘Tudo certo!’ impressa na tela.

Assim como o IF, o else também pode usar as mesmas sintaxes, obedecendo a mesma forma de trabalho, assim como no IF a omissão das chaves no else com um único comando não é recomendada.

Abaixo um exemplo do else usando a sintaxe do endif;, lembrando que esta sintaxe é utilizada, geralmente, nos casos onde o bloco contém, além de PHP, HTML.

<?php
// Rotina qualquer que traga dados de um aluno do banco de dados
$aluno = AlunoRepository::getInfo(1);

if (aluno):
    ?>
    <p><strong>Nome: </strong><?= $aluno->getNome(); ?></p>
    <p><strong>Data de nascimento: </strong><?= $aluno->getDataNascimento()->format('d/m/Y'); ?></p>
    <p><strong>Telefone: </strong><?= $aluno->getTelefone(); ?></p>
    ...
    <?php
else:
    ?>
    <div class="info-message">Aluno nao encontrado</div>
    <?php
endif;

 

Podemos notar que o else: compartilha o fechamento do IF, ou seja, o endif;, não existindo assim um “endelse;”.

elseif()

O elseif() entra em cena quando necessitamos de uma terceira condição, poderíamos pensar nele como um OU SE, ou seja, caso a condição do IF não seja satisfeita, então podemos especificar uma segunda (terceira, quarta, quinta ou quantas condições forem necessárias) a ser avaliada e um outro bloco de código.

Assim como o if e o else, o elseif também pode utilizar as mesmas sintaxes apresentadas acima, abaixo temos um exemplo do uso dele:

<?php
$variavel = 3;
if ($variavel > 5) {
    echo 'Maior que 5';
} elseif ($variavel < 5) {
    echo 'Menor que 5';
} else {
    echo 'Igual 5'; 
}

 

No exemplo acima, a mensagem exibida seria ‘Menor que 5’.

O elseif pode também ser escrito separadamente (else if), apesar de ser recomendado o uso dele sem separação.

O PSR-2 recomenda que funções e parênteses de estruturas de controle devem ser separadas por espaço antes da abertura e após o fechamento do parênteses, e sem espaço para o conteúdo interno, por exemplo:

<?php
// Não recomendável
if( $a==$b ) echo 'São iguais';

// Recomendável
if ($a == $b) echo 'São iguais';

 

Maiores informações podem ser encontradas na página oficial do PSR-2, neste link.

IF aninhado

Dizemos que um IF é aninhado quando este está dentro de um bloco de outro IF, vejamos o exemplo abaixo:

<?php
$nota = 7;

if ($nota > 4) {
    if ($nota >= 6.5) {
        echo 'Aprovado';
    } else {
        echo 'Recuperação';
    }
} else {
    echo 'Reprovado';
}

 

Podemos notar no exemplo acima que dentro do IF que tem como condição $nota > 4, outra condição será verificada, se a nota for maior que 6.5 para aprovado, neste caso temos um if aninhado, podemos aninhar quantos ifs forem necessários, porém esta prática não é muito recomendada por aumentar a complexidade do código, quando a quantidade de blocos aninhados está muito grande, talvez seja interessante pensar em uma refatoração do código, para torná-lo mais claro, e mais simples.

Operadores Ternários

Apesar do nome, os operadores ternários são como um tipo de if abreviado, é uma forma compacta de trabalhar com condições, geralmente utilizado para atribuição de valores a variáveis, vejamos um exemplo:

<?php
$situacao = $nota > 7 ? 'Aprovado' : 'Reprovado';

 

No exemplo acima vemos uma condição seguida de um ponto de interrogação, este símbolo significa que após ele virá o valor (ou ação) que será obtido no caso de a condição ser verdadeira, e após o : virá o valor  (ou ação) quer será obtido no caso de a condição ser falsa. O equivalente ao exemplo acima usando o IF convencional seria:

<?php
if ($nota > 7) {
    $situacao = 'Aprovado';
} else {
    $situacao = 'Reprovado';
}

 

Assim como no IF, dentro de um operador ternário é possível aninhar outras condições, vejamos no exemplo abaixo:

<?php
$situacao = $nota > 7 ? 'Aprovado' : ($nota > 4 ? 'Recuperação' : 'Reprovado');

 

O exemplo acima seria o equivalente a:

<?php

if($nota > 7) {
    $situacao = 'Aprovado';
} elseif ($nota > 5) {
    $situacao = 'Recuperação';
} else {
    $situacao = 'Reprovado';
}

 

Neste ponto, se fazem necessárias duas observações:

  • Para programadores vindos de algumas outras linguagens, é importante notar que quando aninhamos operadores ternários é necessário envolver os internos com parênteses, se observarmos no exemplo acima, veremos que o operador incluso após os “:” está entre parênteses, isso é uma particularidade da linguagem PHP, caso não o façamos podemos ter resultados inesperados para o operador ternário.
  • Não é recomendável o uso de muitos operadores ternários aninhados, pois isso aumenta a complexidade do código, o recomendável é que se aninhe até 1 ou 2 níveis, no máximo.

Switch Case

Esta estrutura de controle é muito útil quando desejamos realizar várias verificações de igualdade, sua sintaxe é um pouco mais enxuta e simples do que a de vários IFs sucessivos, os quais teriam o mesmo efeito.

Vejamos um exemplo:

// Qualquer rotina que traga um cliente do banco de dados
$cliente = ...;

if($cliente->getSituacao() == 1){
    echo 'Cliente ativo';
} elseif ($cliente->getSituacao() == 2) {
    echo 'Cliente suspenso por falta de pagamento';
} elseif ($cliente->getSituacao() == 3) {
    echo 'Cliente inativo';
} elseif ($cliente->getSituacao() == 4) {
    echo 'Cliente excluído';
}

 

Observando a quantidade de ifs acima, podemos notar que o código fica complexo, e cheio de comparações, a situação piora quando temos mais códigos dentro de cada bloco, neste caso podemos utilizar o Switch Case para o mesmo fim, vamos dar uma olhada como ficaria utilizando-o:

<?php
// Qualquer rotina que traga um cliente do banco de dados
$cliente = ...;

switch($cliente->getSituacao()) {
    case 1: 
        echo 'Cliente ativo'; 
        break;
    case 2: 
        echo 'Cliente suspenso por falta de pagamento'; 
        break;
    case 3: 
        echo 'Cliente inativo'; 
        break;
    case 4: 
        echo 'Cliente excluído'; 
        break;
}

 

Podemos observar que todo o bloco de código fica mais enxuto, mais legível, neste ponto podemos observar também a inclusão de um comando novo no final de cada linha, o comando break.

O comando break impede que o código passe pelos próximos cases da sequência, interrompendo a execução do bloco de código. No manual do PHP podemos ver com mais detalhes o uso do comando break.

É comum entre os programadores não recomendar o uso do comando break fora do escopo de um Switch Case, por adicionar complexidade desnecessária ao código.

Quando usamos switch também podemos avaliar várias situações que possuem o mesmo resultado, sem a necessidade de utilizarmos um código igual para cada case, veja o exemplo:

<?php
// Qualquer rotina que traga um cliente do banco de dados
$cliente = ...;

switch($cliente->getSituacao()) {
    case 1:
    case 2: 
        echo 'O cliente pode comprar, compra será efetivada após confirmação do financeiro'; 
        // Qualquer rotina que realize a compra do cliente
        break;
    case 3: 
        echo 'Cliente inativo'; 
        break;
    case 4: 
        echo 'Cliente excluído'; 
        break;
}

 

No exemplo acima o PHP vai interpretar o case 1 e o case 2 para, ai sim, executar a rotina, visto que esta rotina será a mesma para os dois casos, se colocarmos isso dentro de um IF, seria o equivalente a seguinte condição:

if ($cliente->getSituacao() == 1 || $cliente->getSituacao() == 2) {

 

Podemos ver novamente que a sintaxe se torna mais clara e resumida neste caso.

Estas são as estruturas de controle de fluxo condicionais do PHP, com elas podemos mudar o fluxo de nosso programa, tomando assim as decisões de negócio de seu software.

Para os leitores iniciantes deixo dois desafios até o próximo post da série:

  1. Dado um número atribuído a uma variável verificar se este número é par ou ímpar.
  2. Dado o mesmo número verificar se o mesmo é primo. (lembrando que um número primo é divisível somente por ele mesmo e por 1).

Bom pessoal, ficamos por aqui, as soluções para os desafios estarão no próximo post da séria, se gostaram do post, compartilhem pode ser útil para mais alguém, se acha que faltou algo, deixe nos comentários.

Sobre Rodrigo Teixeira Andreotti

Técnico em Informática formado pela ETEC Lauro Gomes Analista de Sistemas Pela universidade Metodista. Impacta Certified Specialist - Linux Programador PHP desde 2007, atuando em diversos projetos de sistemas internos, migrações, desenvolvimento de API's e sites públicos tanto como freelancer quanto com contrato com empresas. Também atuante como administrador Linux, administrando dois servidores próprios com CentOS, além de prestar serviços de administração e manutenção em servidores para algumas empresas.



Tutorial PHP: Estruturas de Controle de Fluxo Condicionais

Tutorial PHP: Estruturas de Controle de Fluxo Condicionais

As linguagens de programação possuem algumas características em comum, dentre elas variáveis (vistas neste post) e estruturas de controle de fluxo. Para que o post não fique muito longo, iremos dividi-lo em duas partes. Neste post veremos estruturas de controle de fluxo condicionais, que são responsáveis pela lógica que utilizaremos em nossos programas, sendo assim são uma parte muito importante da programação.

Estruturas de Controle de Fluxo

Estruturas de controle de fluxo são responsáveis pela forma como o fluxo do programa será executado, ou seja, são nelas que colocamos condições para uma ou outra rotina ser executada, ou rodarmos determinada rotina repetidas vezes dada uma determinada condição de parada, isso permite dinamismo ao programa, sem estruturas de controle não teríamos como controlar a execução de nosso programa de modo a determinar quais ações devem ser executadas em determinados casos, ou ficaria muito complicado representar uma tabela de um banco de dados, por exemplo, sendo assim, uma linguagem depende muito das estruturas de controle.

Controles de Fluxo Condicionais

Os controles de fluxo condicionais são responsáveis pela execução de trechos de código ou rotinas diferentes a depender de condições estabelecidas nas lógicas de negócio dos nossos scripts.

No PHP temos as seguintes estruturas de controle:

  • if, elseif, else
  • switch
  • Operadores ternários

Os quais veremos detalhadamente a seguir.

Estrutura IF

O comando if é utilizado para verificarmos determinada condição e, caso esta condição seja verdadeira, executarmos determinado código, vejamos o exemplo a seguir:

<?php
if(1 == 2) {
    echo 'Tem algo errado que não está certo!';
}

 

No exemplo acima o comando echo nunca será executado, pois dissemos ao php que ele só deve ser executado caso a condição 1 == 2 (se caso 1 for igual a 2) seja verdadeira. Se fôssemos substituir o comando if por uma palavra de nosso dia a dia, seria a palavra SE, se utilizarmos o exemplo acima, poderíamos dizer o seguinte:

SE um for igual a dois mostre a frase “Tem algo errado que não está certo!”

A estrutura IF na realidade verifica o tipo de dados booleano, ou seja, ela interpreta se o valor entre parênteses é verdade ou falso (true ou false), para isso podemos fazer uso massivo dos operadores de comparação, e dos operadores lógicos da linguagem, os quais veremos no próximo post da série.

O comando IF pode ser utilizado de três formas distintas:

if (condição) // comando único;


if (condição) {
    // Bloco de código
}


if (condição):
    // Bloco de código
endif;

 

As chaves podem ser omitidas, apesar de não ser recomendável, quando dentro do if só existir um comando a ser executado, por exemplo:

<?php
if (1 == 2)
    echo 'Tem algo errado aqui!';

 

O if utilizando as chaves ( { e } ) é recomendado quando o bloco de códigos pertencente a este IF contiver somente comandos PHP, por exemplo:

<?php
// Resolução de uma equação de segundo grau
$delta = $b**2 - 4*$a*c;

if ($delta > 0) {
    $x1 = (-$b + sqrt($delta))/4*$a;
    $x2 = (-$b - sqrt($delta))/4*$a;
}

 

O if utilizando “:” e endif; é recomendado para quando dentro do if contiver, além de código PHP, também código HTML, nestes casos os códigos tendem a ficar maiores, e usando esta sintaxe temos uma visibilidade maior de onde começa e onde acaba o bloco IF. Por exemplo:

<?php
// Rotina qualquer que traga dados de um aluno do banco de dados
$aluno = AlunoRepository::getInfo(1);

if (aluno): ?>
    <p><strong>Nome: </strong><?= $aluno->getNome(); ?></p>
    <p><strong>Data de nascimento: </strong><?= $aluno->getDataNascimento()->format('d/m/Y'); ?></p>
    <p><strong>Telefone: </strong><?= $aluno->getTelefone(); ?></p>
    ...
    <?php
endif;

 

Se notarmos no exemplo acima, veremos que esse bloco if pode ficar muito grande, utilizando as sintaxe que faz uso do endif;, conseguimos visualizar melhor onde nosso if termina sem confundirmos com as tags html.

Else

Se o IF é o SE, o else é o Senão, ou seja, é a instrução que será executada caso a condição verificada no IF não seja verdadeira, vamos ao exemplo:

<?php
if (1 == 2) {
    echo 'Tem algo errado aqui!';
} else {
    echo 'Tudo certo!';
}

 

No exemplo acima, ao contrário do primeiro, onde não era mostrado nada, neste teríamos a mensagem ‘Tudo certo!’ impressa na tela.

Assim como o IF, o else também pode usar as mesmas sintaxes, obedecendo a mesma forma de trabalho, assim como no IF a omissão das chaves no else com um único comando não é recomendada.

Abaixo um exemplo do else usando a sintaxe do endif;, lembrando que esta sintaxe é utilizada, geralmente, nos casos onde o bloco contém, além de PHP, HTML.

<?php
// Rotina qualquer que traga dados de um aluno do banco de dados
$aluno = AlunoRepository::getInfo(1);

if (aluno):
    ?>
    <p><strong>Nome: </strong><?= $aluno->getNome(); ?></p>
    <p><strong>Data de nascimento: </strong><?= $aluno->getDataNascimento()->format('d/m/Y'); ?></p>
    <p><strong>Telefone: </strong><?= $aluno->getTelefone(); ?></p>
    ...
    <?php
else:
    ?>
    <div class="info-message">Aluno nao encontrado</div>
    <?php
endif;

 

Podemos notar que o else: compartilha o fechamento do IF, ou seja, o endif;, não existindo assim um “endelse;”.

elseif()

O elseif() entra em cena quando necessitamos de uma terceira condição, poderíamos pensar nele como um OU SE, ou seja, caso a condição do IF não seja satisfeita, então podemos especificar uma segunda (terceira, quarta, quinta ou quantas condições forem necessárias) a ser avaliada e um outro bloco de código.

Assim como o if e o else, o elseif também pode utilizar as mesmas sintaxes apresentadas acima, abaixo temos um exemplo do uso dele:

<?php
$variavel = 3;
if ($variavel > 5) {
    echo 'Maior que 5';
} elseif ($variavel < 5) {
    echo 'Menor que 5';
} else {
    echo 'Igual 5'; 
}

 

No exemplo acima, a mensagem exibida seria ‘Menor que 5’.

O elseif pode também ser escrito separadamente (else if), apesar de ser recomendado o uso dele sem separação.

O PSR-2 recomenda que funções e parênteses de estruturas de controle devem ser separadas por espaço antes da abertura e após o fechamento do parênteses, e sem espaço para o conteúdo interno, por exemplo:

<?php
// Não recomendável
if( $a==$b ) echo 'São iguais';

// Recomendável
if ($a == $b) echo 'São iguais';

 

Maiores informações podem ser encontradas na página oficial do PSR-2, neste link.

IF aninhado

Dizemos que um IF é aninhado quando este está dentro de um bloco de outro IF, vejamos o exemplo abaixo:

<?php
$nota = 7;

if ($nota > 4) {
    if ($nota >= 6.5) {
        echo 'Aprovado';
    } else {
        echo 'Recuperação';
    }
} else {
    echo 'Reprovado';
}

 

Podemos notar no exemplo acima que dentro do IF que tem como condição $nota > 4, outra condição será verificada, se a nota for maior que 6.5 para aprovado, neste caso temos um if aninhado, podemos aninhar quantos ifs forem necessários, porém esta prática não é muito recomendada por aumentar a complexidade do código, quando a quantidade de blocos aninhados está muito grande, talvez seja interessante pensar em uma refatoração do código, para torná-lo mais claro, e mais simples.

Operadores Ternários

Apesar do nome, os operadores ternários são como um tipo de if abreviado, é uma forma compacta de trabalhar com condições, geralmente utilizado para atribuição de valores a variáveis, vejamos um exemplo:

<?php
$situacao = $nota > 7 ? 'Aprovado' : 'Reprovado';

 

No exemplo acima vemos uma condição seguida de um ponto de interrogação, este símbolo significa que após ele virá o valor (ou ação) que será obtido no caso de a condição ser verdadeira, e após o : virá o valor  (ou ação) quer será obtido no caso de a condição ser falsa. O equivalente ao exemplo acima usando o IF convencional seria:

<?php
if ($nota > 7) {
    $situacao = 'Aprovado';
} else {
    $situacao = 'Reprovado';
}

 

Assim como no IF, dentro de um operador ternário é possível aninhar outras condições, vejamos no exemplo abaixo:

<?php
$situacao = $nota > 7 ? 'Aprovado' : ($nota > 4 ? 'Recuperação' : 'Reprovado');

 

O exemplo acima seria o equivalente a:

<?php

if($nota > 7) {
    $situacao = 'Aprovado';
} elseif ($nota > 5) {
    $situacao = 'Recuperação';
} else {
    $situacao = 'Reprovado';
}

 

Neste ponto, se fazem necessárias duas observações:

  • Para programadores vindos de algumas outras linguagens, é importante notar que quando aninhamos operadores ternários é necessário envolver os internos com parênteses, se observarmos no exemplo acima, veremos que o operador incluso após os “:” está entre parênteses, isso é uma particularidade da linguagem PHP, caso não o façamos podemos ter resultados inesperados para o operador ternário.
  • Não é recomendável o uso de muitos operadores ternários aninhados, pois isso aumenta a complexidade do código, o recomendável é que se aninhe até 1 ou 2 níveis, no máximo.

Switch Case

Esta estrutura de controle é muito útil quando desejamos realizar várias verificações de igualdade, sua sintaxe é um pouco mais enxuta e simples do que a de vários IFs sucessivos, os quais teriam o mesmo efeito.

Vejamos um exemplo:

// Qualquer rotina que traga um cliente do banco de dados
$cliente = ...;

if($cliente->getSituacao() == 1){
    echo 'Cliente ativo';
} elseif ($cliente->getSituacao() == 2) {
    echo 'Cliente suspenso por falta de pagamento';
} elseif ($cliente->getSituacao() == 3) {
    echo 'Cliente inativo';
} elseif ($cliente->getSituacao() == 4) {
    echo 'Cliente excluído';
}

 

Observando a quantidade de ifs acima, podemos notar que o código fica complexo, e cheio de comparações, a situação piora quando temos mais códigos dentro de cada bloco, neste caso podemos utilizar o Switch Case para o mesmo fim, vamos dar uma olhada como ficaria utilizando-o:

<?php
// Qualquer rotina que traga um cliente do banco de dados
$cliente = ...;

switch($cliente->getSituacao()) {
    case 1: 
        echo 'Cliente ativo'; 
        break;
    case 2: 
        echo 'Cliente suspenso por falta de pagamento'; 
        break;
    case 3: 
        echo 'Cliente inativo'; 
        break;
    case 4: 
        echo 'Cliente excluído'; 
        break;
}

 

Podemos observar que todo o bloco de código fica mais enxuto, mais legível, neste ponto podemos observar também a inclusão de um comando novo no final de cada linha, o comando break.

O comando break impede que o código passe pelos próximos cases da sequência, interrompendo a execução do bloco de código. No manual do PHP podemos ver com mais detalhes o uso do comando break.

É comum entre os programadores não recomendar o uso do comando break fora do escopo de um Switch Case, por adicionar complexidade desnecessária ao código.

Quando usamos switch também podemos avaliar várias situações que possuem o mesmo resultado, sem a necessidade de utilizarmos um código igual para cada case, veja o exemplo:

<?php
// Qualquer rotina que traga um cliente do banco de dados
$cliente = ...;

switch($cliente->getSituacao()) {
    case 1:
    case 2: 
        echo 'O cliente pode comprar, compra será efetivada após confirmação do financeiro'; 
        // Qualquer rotina que realize a compra do cliente
        break;
    case 3: 
        echo 'Cliente inativo'; 
        break;
    case 4: 
        echo 'Cliente excluído'; 
        break;
}

 

No exemplo acima o PHP vai interpretar o case 1 e o case 2 para, ai sim, executar a rotina, visto que esta rotina será a mesma para os dois casos, se colocarmos isso dentro de um IF, seria o equivalente a seguinte condição:

if ($cliente->getSituacao() == 1 || $cliente->getSituacao() == 2) {

 

Podemos ver novamente que a sintaxe se torna mais clara e resumida neste caso.

Estas são as estruturas de controle de fluxo condicionais do PHP, com elas podemos mudar o fluxo de nosso programa, tomando assim as decisões de negócio de seu software.

Para os leitores iniciantes deixo dois desafios até o próximo post da série:

  1. Dado um número atribuído a uma variável verificar se este número é par ou ímpar.
  2. Dado o mesmo número verificar se o mesmo é primo. (lembrando que um número primo é divisível somente por ele mesmo e por 1).

Bom pessoal, ficamos por aqui, as soluções para os desafios estarão no próximo post da séria, se gostaram do post, compartilhem pode ser útil para mais alguém, se acha que faltou algo, deixe nos comentários.

Sobre Rodrigo Teixeira Andreotti

Técnico em Informática formado pela ETEC Lauro Gomes Analista de Sistemas Pela universidade Metodista. Impacta Certified Specialist - Linux Programador PHP desde 2007, atuando em diversos projetos de sistemas internos, migrações, desenvolvimento de API's e sites públicos tanto como freelancer quanto com contrato com empresas. Também atuante como administrador Linux, administrando dois servidores próprios com CentOS, além de prestar serviços de administração e manutenção em servidores para algumas empresas.