Curso de PHP: #22 - Qual a diferença entre break e exit / die?

Paulo ReisPaulo Reis
3 min read

Fala escoteiro, tudo bem!? Subindo mais um degrau em nossa escadaria para o sucesso com o PHP vimos no post anterior como trabalhar com criar alguns jogos simples com o PHP. Hoje vamos entender a diferença entre dois comandos do PHP que confundem bastante quem tá começando break e exit.

Break

O break é um comando usado em loops para literalmente parar a execução do laço. Vamos a um exemplo de loop com while:

<?php

$idade = 10;
$i = 1;

while ($i <= $idade) {
  echo "Sua idade agora é: " . $i . PHP_EOL;
  $i++;
}

echo "### Eu vou ser impresso!";

O código acima imprimirá algo como:

Sua idade agora é: 1
Sua idade agora é: 2
Sua idade agora é: 3
Sua idade agora é: 4
Sua idade agora é: 5
Sua idade agora é: 6
Sua idade agora é: 7
Sua idade agora é: 8
Sua idade agora é: 9
Sua idade agora é: 10
### Eu vou ser impresso!

Até ai nada demais, porém, imagine que você por algum motivo quer parar a execução do Loop quando o valor de $i for 4.

<?php

$idade = 10;
$i = 1;
$limite = 4;

while ($i <= $idade) {
  if ($i == $limite) {
    break;
  }

  echo "Sua idade agora é: " . $i . PHP_EOL;
  $i++;
}

echo "### Eu vou ser impresso!";

O código acima imprimirá algo como:

Sua idade agora é: 1
Sua idade agora é: 2
Sua idade agora é: 3
### Eu vou ser impresso!

Note que o PHP, à cada iteração, faz uma verificação se $i == $limit, para os valores 1, 2 e 3, isso sempre retornava false, porém, no momento em que $i recebeu 4, a condição passou a ser verdadeira, assim, o break foi executado, matando imediatamente a execução do loop, porém tudo que já tinha sido executado até aquele momento não foi alterado.

Note também que a linha echo "### Eu vou ser impresso!", que está fora do Loop, não é afetada pelo break, afinal ela não está dentro do Loop.

Exit ou Die

O PHP possui 2 funções que funcionam da mesma foram. Na verdade uma é apenas um alias para a outra que são as funções exit e die. Diferente do break, essas funções encerram abruptamente a execução do programa inteiro, ou seja, se um arquivo php estiver sendo executado, quando o interpretador php encontrar uma instrução exit ou die, ele vai matar o programa na mesma hora, não importando nada que tiver após essa instrução.

Mesmo exemplo, porém com o exit:

<?php

$idade = 10;
$i = 1;
$limite = 4;

while ($i <= $idade) {
  if ($i == $limite) {
    exit;
  }

  echo "Sua idade agora é: " . $i . PHP_EOL;
  $i++;
}

echo "### Eu vou ser impresso!";

O código acima imprimirá algo como:

Sua idade agora é: 1
Sua idade agora é: 2
Sua idade agora é: 3

Note que agora a linha echo "### Eu vou ser impresso!" não é mais executada, porque agora o programa foi encerrado com um todo e não apenas a execução do Loop.

Bonus!

Tanto a função exit quanto a função die aceitam receber um parâmetro. Se um valor for informado nesse parâmetro, a função exibirá esse valor antes de encerrar o programa.

<?php

$idade = 10;
$i = 1;
$limite = 4;

while ($i <= $idade) {
  if ($i == $limite) {
    exit("Acabou-se o que era doce!!!");
  }

  echo "Sua idade agora é: " . $i . PHP_EOL;
  $i++;
}

echo "### Eu vou ser impresso!";

O código acima imprimirá algo como:

Sua idade agora é: 1
Sua idade agora é: 2
Sua idade agora é: 3
Acabou-se o que era doce!!!

E ai ficou claro agora? Se gostou não esquece de mandar para aquele seu amigo que precisa conhecer essas dicas ;)

Valeu!!!

0
Subscribe to my newsletter

Read articles from Paulo Reis directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Paulo Reis
Paulo Reis

Eu sou um programador apaixonado por aprender e ensinar. Nos últimos 16 anos tenho focado minhas atenções ao desenvolvimento web Fullstack, mas sou bastante entusiasta das plataformas mobile.