PHP para Iniciantes: Estruturas de Controle - BREAK
Tão agressivo quanto sugerido, break é uma instrução que serve para quebrar alguma coisa. Na verdade, sua semântica não é exatamente uma quebra, então não associe a tradução literal pois está mais ligada com a tradução encerrar.
Você pode dar algum exemplo do dia a dia, Kiko?
Claro. Lembra do $parafuso->apertar()
? Quem já montou alguns móveis sabe que, às vezes, um parafuso se perde na entrega. Ou pior: você tem o número exato de parafusos e, por algum motivo, enquanto apertava... O parafuso simplesmente se desmanchou.
Quando esse último caso acontece, você pode até tentar apertar ou verificar se está firme: o problema é que você não tem como averiguar. À princípio, se você programa uma máquina para apertar até quando chegar na fricção considerada "firme", essa situação vai gerar um loop infinito. Você precisa ter uma validação que garanta que toda a função de apertar resulte em sucesso ou falha, onde desmantelar, com toda certeza, precisa ser identificada como uma falha.
E o que acontece quando uma ação repetitiva encontra uma falha? Bem, você precisa encerrar o laço. É para isso que serve o break
. É outra coisa da programação que você faz sem perceber... Vê como seu cérebro é incrível?
Outra analogia que posso descrever tem um forte potencial de estar no seu dia-a-dia: escrever mensagem para a pessoa errada. Se você percebeu: break
, para de digitar, interrompe o fluxo todo, volta pra pessoa certa e digita.
Se você não percebeu...
Enfim, o ponto é que o loop desse exemplo seria o ato de digitar até completar a mensagem. Por algum motivo, você checou com quem estava falando enquanto digitava (mais uma coisa absurda do nosso cérebro) e fez a validação que te força a fazer um break
em caso de falha.
Ok, eu comparei com a capacidade de processamento dos humanos e sei que não é tão simples assim, a questão é apenas entender a analogia, ok?!
Ok, Kiko, entendi... Mas como que usa isso?
Primeiramente você precisa saber quais estruturas suportam o uso do break
. São elas:
while
;do-while
;for
;foreach
;switch
(veremos em um artigo próximo).
Agora podemos falar sobre como aplicar, que não é tão complicado assim mas pode ser confuso e o motivo é claro: o break
pode ser usado para encerrar múltiplos fluxos encadeados simultaneamente.
QUE
Isso significa que sua sintaxe aceita tanto o uso isolado (break;
) quanto informando a quantidade de laços que devem ser encerrados (break <número>;
). É pleonasmo usar um comando break 1
, que equivale a escrever apenas break
.
Encerrando somente um fluxo
É só usar o isolado:
<?php
while (true) {
echo 'Esse comando poderia ser um loop infinito...' . PHP_EOL;
break;
}
echo 'Se não fosse pelo break';
Encerrando mais de um fluxo
Aí é só informar a quantidade de estruturas que deseja encerrar. Lembrando que só encerra as estruturas onde é aceito, ou seja, se você tentar encerrar dois laços onde só existe um, irá receber erro.
<?php
while (true) {
echo 'Esse comando poderia ser um loop infinito...' . PHP_EOL;
while (true) {
echo 'E esse um loop infinito dentro de um loop infinito' . PHP_EOL;
break 2;
}
}
echo 'Se não fosse pelo break';
Fácil, não é mesmo? Acho que gastei mais tempo escrevendo analogias do que ensinando, de fato. Hehehe.
Enfim... Curtiu? Comenta e compartilha! No próximo artigo irei falar sobre uma outra estrutura muito útil para laços repetitivos, o continue
. Você faz ideia de pra que serve? Se não, espera um pouco que jaja eu te digo!
Inté!!