MeuMySQL Blog is now at http://blog.mdnsolutions.com/.

Saturday, September 15, 2012

PHP: Usando o goto


Olá galera!

Em meus estudos sobre o php 5.3 e 5.4 encontrei um interessante recurso adicionado à essas versões (especificamente >=5.3.0), o GOTO

O goto pode ser usado para navergar em diferentes blocos do programa. O ponto alvo é especifidaco por uma 'label' seguida de dois pontos, e para se chegar nele usamos o goto seguindo do nome definido na 'label'.

O alvo do goto deve estar dentro do mesmo arquivo e contexto, isso quer dizer que não pode saltar para fora de uma função ou método, tão pouco dentro de um/uma. Você também não pode saltar dentro de nenhum tipo de estrutura de controle loop ou switch. Você pode saltar fora deles, é comum usar o goto no lugar de vários níveis de break;


Uso simples no código:

<?php
echo "Go to: ";

goto middle;<p>

echo 'The Begin';
exit;

middle:
echo 'The middle';
exit;

end:
echo 'The end';
exit;
?>

No caso assim você teria a saída "Go to: The middle".

Uso em um loop:

<?php
for($i=0, $j=50; $i<100; $i++) {
  while ($j--) {
    if ($j==17) goto end; 
  }  
}
echo "i = " . $i;
end:
echo 'j hit 17';
?>

Neste caso não irá funcionar:

<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
  loop:
      echo 'test';
}
echo "$i = $i";
?>

Dica: goto é usado somente em casos nos quais nenhuma outra instrução ou construção esteja disponível.

Bem, é isso galera, qualquer dúvida só deixar um recado. Até mais.



5 comments:

  1. O GOTO é para ser usado SOMENTE quando uma arma estiver na cabeça da sua mãe, e mesmo assim, tente negociar com o agressor.

    ReplyDelete
  2. Hehehe.. Certamente Luiz, mas é importante que o desenvolvedor saiba que tal recurso existe na linguagem em que trabalha.

    ReplyDelete
  3. Bem, só gostaria de saber porque esse suposto preonceito da maioria dos programadores sobre a função goto? É uma função bem útil. Poderia me explicar?

    ReplyDelete
    Replies
    1. William Lima, Porque o goto é considerado programação espaguete, ou seja, se o cara usa muito o goto ao ler o código vai ficar perdido, pois quebra a sequência do fluxo da programação. Igual a um espaguete deixa o fluxo todo cheio de nós...

      Delete
  4. Sou novo em desenvolvimento, gostaria de saber se esse comando goto é parecido comando break, poderia me explicar?

    ReplyDelete