Forum Pplware

Versão Completa: Clean HTML com php
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
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 Smile

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?

Código PHP:
<?=$menu->item?>

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 é
Código PHP:
<? 
e
Código PHP:
<?= 
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 Tongue 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 Smile

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.
URL's de Referência