Por que? php e? em todas as linhas

23

Eu já vi essa convenção praticamente em todos os lugares e, às vezes, chega perto de me enlouquecer:

<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
    <?php the_content(); ?>
<?php endwhile; // end of the loop. ?>

Em que <?php e fechamento ?> estão em todas as linhas, mesmo que não haja nenhum código HTML intermediário.

Minha pergunta é: Por quê? Por que incluir todas essas tags extras?

Para mim, parece que essa convenção acrescenta uma quantidade significativa de desordem ao código, é irritante seguir em primeiro lugar e acrescenta que muito mais lugares para deixar uma tag de abertura ou de fechamento acidentalmente.

OBSERVAÇÃO

Este é um código extraído do tema Twenty-Twelve, o exemplo dado pelo WordPress.

    
por Indigenuity 10.01.2013 / 00:04
fonte

5 respostas

21

Isso não é recomendado em nenhum guia de estilo do WordPress, e eu acho que é um estilo ruim de codificação. Os novatos estão usando esse estilo, talvez porque pareça mais com HTML…

Infelizmente, os temas padrão estão usando esse estilo com muita frequência, então alguns iniciantes podem pensar que ele faz parte de um estilo de código.

Uma desvantagem deste estilo é o tratamento de comentários. Observe atentamente o exemplo a seguir e como ele não faz o que o autor espera:

<?php echo 'Important: '; // announcement ?>
<?php echo ' enter the word '; /* start ?>
<?php echo '<b>password</b>'; /* the end */ ?>

Boa sorte depurando isso. :)

Regra: Alterne entre o contexto PHP e HTML apenas se você tiver que criar saída em ambos os idiomas. Use quebras de linha regulares em todos os outros casos.

Atualização, mais pensamentos: Todo arquivo HTML válido é um programa PHP completo e válido. Sim, mesmo que não contenha uma única linha de código PHP real.

Se você começar do HTML e adicionar pequenos pedaços de PHP passo a passo ... você pode acabar com o estilo que estamos discutindo aqui. É aí que refatoração entra no jogo: assim que tudo funcionar como esperado, reescreva o código até que ele seja o mais legível possível, fácil de manter e estender, sem repetir as partes.

Eu acho que algumas pessoas estão felizes sem este último passo, e é por isso que isso não vai morrer em breve.

    
por fuxia 10.01.2013 / 00:09
fonte
12

Embora eu evite isso para comentários do PHP, eu sou um ávido opener de PHP / próximo em arquivos de template. A alternativa envolve ecoar HTML via strings PHP, o que parece ainda pior na minha opinião. Como um exemplo primitivo:

<!-- Example 1 -->
<ul>
    <?php
        foreach ( $list_items as $list_item ) {
            echo "<li><a href='" . $list_item->url . "'>" . $list_item->name . "</a></li>";
        }
    ?>
</ul>

<!-- Example 2 -->
<ul>
    <?php foreach ( $list_items as $list_item ) : ?>
        <li>
            <a href="<?php echo $list_item->url; ?>">
                <?php echo $list_item->name; ?>
            </a>
        </li>
    <?php endforeach; ?>
</ul>

O exemplo 2 é mais detalhado? Possivelmente? Mas mais fácil de ler e editar, na minha opinião. Você pode imaginar o quão feio pode ser para um HTML complexo.

Além disso, apenas uma observação: usar endforeach e endif ao escrever HTML entre sua lógica PHP aumenta a legibilidade em ton em comparação a } .

    
por Andy Adams 10.01.2013 / 02:01
fonte
10

Trata-se de escolher entre ver a página como:

  • como entidade completamente gerada pelo PHP
  • como modelo de documento HTML, desenvolvido com tags de modelo PHP

Diferentes pessoas tendem a pensar sobre isso de forma diferente. Note que as funções raramente usam esse estilo, porque elas se parecem mais com um bloco de PHP puro. Por outro lado, não é incomum nos templates, porque eles são mais espalhados pelos arquivos e a quantidade de HTML puro pode ser facilmente maior que a do PHP neles.

Se você olhar para os mecanismos de templates (Mustache, Twig, etc) - eles se parecem muito com este estilo, exceto que sua sintaxe tende a eliminar a verbosidade do PHP simples.

PS: Quero observar que estou falando sobre a incorporação sane do PHP em HTML, e não literalmente tags de abertura e finalização em todas as linhas apenas por causa disso.

    
por Rarst 10.01.2013 / 00:54
fonte
2
  

Minha pergunta é: por quê? Por que incluir todas essas tags extras?

A resposta é bem simples: público. Quando as pessoas (não os programadores) pegam um tema, FTPing up sua instalação, executando a configuração de 5min e assim por diante já parece programação para eles. Quando eles querem adicionar ou alterar uma única linha de qualquer que seja em seu tema, talvez eles já tenham descoberto o que é HTML. O PHP ainda estará longe de seu alcance. Então, meu palpite é que a ideia por trás disso é facilitar a adição ou remoção de elementos sem quebrar nada quando eles cometem um erro.

Nota: isso não é o que eu gosto, prefiro ou recomendo. É só o que eu penso porque isso acontece.

    
por kaiser 28.01.2013 / 05:26
fonte
0

Eu descobri que alguns novos programadores são treinados dessa maneira. Estou seguindo um curso de 40 horas em Lynda e o instrutor está lançando tags PHP em todas as linhas, com exceção das definições de função. É provavelmente para desenhar claramente linhas entre HTML e PHP, o que provavelmente ajuda novas pessoas a entenderem onde o HTML termina e o PHP começa. Depois disso, provavelmente é um hábito. Eu estava começando a me irritar com isso e decidi ver se alguém estava reclamando.

    
por Kitt Parker 16.05.2016 / 16:05
fonte