Boas,
tenho esta duvida já há algum tempo:
vamos imaginar o seguinte:
Código PHP:
<ul>
<?php foreach($sections as $section): ?>
<?php if($section->sectionparent == 0): ?>
<li><?=$section->sectionname; ?></li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
Isto funciona perfeitamente, porém o meu html fica cheio de espaços por causa das restantes rows do foreach que não se enquadram na condição dentro do IF.
Eu sei que podia enviar para a view apenas as $sections que têm parent = 0 e o html ficava bem. Mas é mesmo a titulo de curiosidade se existe alguma forma de limpar/identar o html todo antes de ele ser renderizado...
Bem, o que eu normalmente faço é algo do género:
Código PHP:
<ul>
<?php
foreach ($sections as $section) {
if ($section->sectionparent == 0) {
?>
<li><?php echo $section->sectionname; ?></li>
<?php
}
}
?>
</ul>
Se te incomodar ficar tudo um pouco junto, acrescentas um line break, para ficar algo como:
Código PHP:
<?php
...
?>
<li><?php echo $section->sectionname; ?></li>
<?php
...
?>
E já não deverás ter problemas no output.
NOTA: Evita short tags, por vários motivos: são deprecated, utilizam mais recursos e dificultam leitura e manutenção por terceiros
Sério? não sabia que eram deprecated... Alias até só comecei a usar mais recentemente porque até achei mais facil de ler.
Bem amanhã então experimento fazer como disseste
thanks =)
Li sobre isso já há algum tempo, na versão 6 do PHP seriam deprecated e no futuro não suportadas de todo. O maior "problema" tem que ver com a sintaxe do XML, mas actualmente e essencialmente, é preferível não usar devido aos outros 2 motivos que te falei.
ok, pronto daqui em diante volto à maneira de código normal. Eu apenas achava as short tags bastante úteis dentro de uma view. No meio do html torna-se mais simples.
Então e coisas como isto vai desaparecer também certo?
ou então if's inline (não sei se é assim que se chamam)
tipo:
Código PHP:
if(isset($options['idmenu'])
return $query->result();
ou seja eu muitas vezes neste tipo de if's nem sequer uso {}
sim, short tags é
e
Os if's não vão mudar, mas é boa prática (para melhor compreensão e manutenção de terceiros) separar todas as instruções em chavetas, uma instrução por linha.
Por exemplo, para o "short if" normalmente não uso mais do que um parâmetro, senão pode ser complicado alterar esse código, ou ser entendido por outra pessoa.
Ex.:
Código PHP:
if (isset($flag) && is_numeric($flag) && $flag >= 0) {
$val = ($flag == 0) ? true : false;
} else {
$val = null;
}
é muito mais simples de manter e compreender do que, por ex.:
Código PHP:
$val = (isset($flag) && is_numeric($flag) && $flag >= 0) ? (($flag == 0) ? true : false) : null;
em que se quiseres acrescentar mais uma opção ou alteração lógica, é um pesadelo para quem não fez aquilo (e mesmo para quem fez, passado algum tempo).
sim sim, isso é verdade =) eu só uso por norma se for mesmo num exemplo como te disse. Coisas simples de compreender mesmo por terceiros.
Agora algumas das short tags vão-me fazer falta
eu já usava bastante no meio do html lol
então para fazer echos como mostrei em cima era recorrente mesmo...
tenho que dar uma vista de olhos para ver o que vai acontecer à linguagem na versão 6 para me atualizar
isto é como o novo acordo ortográfico os c's no actualizar já estão deprecated e eu ando a fazer uma força enorme para deixar de usar mas quase sempre tenho que voltar atrás e apagar LOL...
anyway thanks pelo esclarecimento =)
abraço.