Quero gerar HTML condicionalmente para gerar uma página, então, qual é a maneira mais fácil de repetir trechos de várias linhas de HTML no PHP 4+? Eu precisaria usar uma estrutura de modelo como o Smarty?
echo '<html>', "\n"; // I'm sure there's a better way!
echo '<head>', "\n";
echo '</head>', "\n";
echo '<body>', "\n";
echo '</body>', "\n";
echo '</html>', "\n";
Respostas:
Existem algumas maneiras de ecoar HTML no PHP.
1. Entre tags PHP
2. Em um eco
Com ecos, se você deseja usar aspas duplas no seu HTML, use ecos de aspas simples da seguinte maneira:
Ou você pode escapar deles assim:
3. Heredocs
4. Nowdocs (a partir do PHP 5.3.0)
Os mecanismos de modelo são usados para usar PHP em documentos que contêm principalmente HTML. De fato, o objetivo original do PHP era ser uma linguagem de modelos. É por isso que, com o PHP, você pode usar coisas como tags curtas para ecoar variáveis (por exemplo
<?=$someVariable?>
).Existem outros mecanismos de gabarito (como Smarty, Twig, etc.) que tornam a sintaxe ainda mais concisa (por exemplo
{{someVariable}}
).O principal benefício do uso de um mecanismo de modelo é manter o design ( lógica de apresentação ) separado da codificação ( lógica de negócios ). Também torna o código mais limpo e fácil de manter a longo prazo.
Se você tiver mais perguntas, não hesite em deixar um comentário.
Leituras adicionais estão disponíveis sobre essas coisas na documentação do PHP .
NOTA: PHP curto marcas
<?
e?>
são desencorajados porque eles só estão disponíveis se habilitado comshort_open_tag
directiva arquivo de configuração php.ini ou se o PHP foi configurado com a--enable-short-tags
opção. Eles estão disponíveis, independentemente das configurações da versão 5.4 em diante .fonte
<?=$var?>
. Tags curtas são desencorajadas como de costume e devem ser removidas (<? doStuff() ?>
).Tente assim ( sintaxe heredoc ):
fonte
<?php $variable = "bla"; ?> <html> <body class="<?php echo $variable ?>"> </body> </html>
--- Então eu pensei que um monte de colchetes estava faltando e não tinha certeza para onde exatamente eles iriam. É sempre engraçado quando meus comentários um pouco mais antigos são respondidos, já que eu era muito novo nisso tudo.Você pode usar a sintaxe alternativa sintaxe alternativa para estruturas de controle e interromper o PHP:
fonte
Basicamente, você pode colocar HTML em qualquer lugar fora das tags PHP. Também é muito benéfico fazer todo o processamento de dados necessário antes de exibir qualquer dado, para separar a lógica e a apresentação.
A exibição dos dados em si pode estar na parte inferior do mesmo arquivo PHP ou você pode incluir um arquivo PHP separado que consiste principalmente em HTML.
Eu prefiro este estilo compacto:
Nota: você pode precisar usar em
<?php echo $var; ?>
vez de<?=$var?>
depender da configuração do PHP.fonte
Sou parcial desse estilo:
Eu uso tags no estilo ASP, sim. A mistura de PHP e HTML parece super legível aos meus olhos. O truque está em obter os marcadores
<%
e%>
apenas para a direita.fonte
Outra abordagem é colocar o HTML em um arquivo separado e marcar a área a ser alterada com um espaço reservado [[content]] nesse caso. (Você também pode usar o sprintf em vez do str_replace.)
Como alternativa, você pode simplesmente enviar todas as coisas do PHP para a tela capturada em um buffer, escrever o HTML e colocar a saída do PHP de volta na página.
Pode parecer estranho escrever o PHP, capturá-lo e depois escrevê-lo novamente, mas isso significa que você pode fazer todos os tipos de coisas de formatação ( heredoc , etc.) e testá-lo corretamente, sem o incômodo da página. modelo atrapalhando. (O Joomla CMS faz assim, a propósito.)
Ou seja:
fonte
Basta usar a função de impressão para ecoar o texto no arquivo PHP da seguinte maneira:
fonte
fonte
Além da resposta de Chris B , se você precisar usá-lo de
echo
qualquer maneira, ainda deseja mantê-lo simples e estruturado e não deseja enviar spam ao código<?php stuff; ?>
, você pode usar a sintaxe abaixo.Por exemplo, você deseja exibir as imagens de uma galeria:
O eco usa vários parâmetros, portanto, com um bom recuo, parece muito bom. Também usar
echo
com parâmetros é mais eficaz do que concatenar.fonte
ou
fonte
Tente o seguinte:
fonte
Não faça eco do HTML.
Se você quiser usar
você deveria estar fazendo isso:
fonte
É assim que eu faço:
fonte