Veja isso:
<?php
echo "Hello World";
?>
<br />
<?php
echo "Welcome";
?>
E agora veja isso:
<?php
echo "Hello World";
echo "<br />";
echo "Welcome";
?>
Qual dos exemplos acima é considerado melhor (pelo menos do ponto de vista do desempenho) ?.
Sei que os exemplos são triviais, mas quero seguir os hábitos de boas práticas desde o início; portanto, quando tenho mais e mais linhas, elas não afetam o desempenho ou o que quer que seja de maneira negativa.
web-development
php
html
precipitado
fonte
fonte
Respostas:
Como o comentário indica, isso deve ser feito por modelos. Mas se apenas duas opções forem possíveis. O caso 1 será melhor. Esse é o mesmo conceito que o layout inflável do Android por xml ou a criação da interface do usuário por meio de programação. Seu
<br/>
é um conteúdo estático do seu html e tudo o que seu servidor fará será mostrá-lo. Mas se você usar php, para executá-lo, isso usará os recursos de seus servidores e estará computando.É assim que deve ser feito: index.php:
header.html e footer.html são modelos.
fonte
Para responder diretamente à sua pergunta: nunca faça eco de texto estático ou HTML. Deixe isso fora do seu PHP.
Escapar para o PHP é um desperdício, se tudo o que você vai fazer é passar texto estático ou html estático. Todo o código dentro de
<?php ?>
é enviado ao PHP para ser interpretado. Isso significa que seu site é mais lento e você está desperdiçando eletricidade se estiver transmitindo grandes quantidades de texto estático para PHP sem motivo. (Às vezes há uma razão.)A melhor prática é fazer com que sua lógica e grunhido funcionem em arquivos sem HTML, apenas PHP.
O jeito que eu gosto de fazer isso é com uma estrutura MVC. Eu tenho PHP puro nos modelos e controladores e uma mistura de HTML e PHP nas visualizações. Você não precisa de uma estrutura MVC; você pode simplesmente colocar sua mistura de HTML em arquivos de modelo, que você incluirá em seus arquivos PHP puros.
Depois de ter suas variáveis (que não incluem HTML nelas) criadas em arquivos PHP puros, você pode transmiti-las ao arquivo com seu HTML. Lá, e somente lá, é bom misturar HTML e PHP. Porém, e isso é importante, mas, ao trabalhar com arquivos que possuem HTML, mantenha o PHP no mínimo.
Felizmente, o PHP vem com ferramentas amigáveis para facilitar a leitura do PHP quando misturado ao html.
Sintaxe alternativa
A melhor prática é usar a sintaxe PHP regular ao escrever PHP puro, mas a sintaxe alternativa ao misturar PHP e HTML.
Em arquivos PHP regulares sem HTML:
Isso é bonito para o PHP puro, mas não é o ideal para escapar do HTML. Em particular, as chaves de fechamento geralmente são difíceis de entender quando aparecem em grandes pilhas de HTML.
Parece, com base na sua pergunta, que você teria escrito, em um arquivo que mistura HTML e PHP, o seguinte:
Pelas razões descritas acima, queremos que o HTML não seja enviado ao PHP. Fazemos o seguinte:
Tiramos nosso HTML de nossas tags PHP, o que é uma melhoria. Mas poderíamos ir mais longe.
Observe como a chave de fechamento não é informativa? Não sabemos se está fechando um loop ou uma declaração if. Isso parece trivial no exemplo acima, mas geralmente existem dezenas de linhas de HTML dentro do if / endif dentro de um loop / endloop.
A melhor prática é que, em um arquivo que mistura PHP e HTML, você usa a sintaxe alternativa, que omite as chaves de abertura e fechamento (
{ }
):Além da semântica da nova sintaxe (
:
e emendif;
vez de{
e}
), você deve observar duas coisas:<?php ?>
tags, portanto não são interpretados. Pelas razões descritas acima, isso é bom.<?php } ?>
) fechando coisas difíceis de encontrar onde elas foram abertas (porque elas são misturadas com um monte de HTML confuso). Novamente, imagine um grande arquivo HTML com loops e instruções if. A especificação do que você está fechando pode esclarecer muito.A mesma sintaxe amigável para modelos também pode ser usada para loops:
Tags curtas
Outra ótima ferramenta fornecida pelo PHP que, novamente, você só deseja usar ao misturar PHP e HTML, são as tags curtas. Talvez você precise ativar as tags curtas no arquivo php.ini. Uma vez ativadas, as tags curtas tornam tudo ainda mais legível.
Sem tags curtas, você precisa escrever,
<?php echo $something; ?>
mas com tags curtas, você pode escrever<?=$something?>
e terá exatamente o mesmo resultado.Ao combinar tags curtas e a sintaxe alternativa do PHP, você pode realmente escrever alguns arquivos HTML elegantes, que incluem elementos PHP. Tomando nosso último exemplo de loop (apenas a parte dentro do loop), as tags curtas nos permitem reduzir:
para
o que é muito mais legível.
Poderíamos ir além? Sim. Usando vários sistemas de modelos, você pode fazer coisas como:
O que é incrivelmente legível. Os sistemas de modelos, no entanto, estão muito fora do escopo da pergunta original (que deixei há um tempo atrás).
fonte
short_open_tag
diretiva esteja sempre ativada. O PHP 5.4<?=$thing?>
disponibiliza o tempo todo, mesmo quandoshort_open_tag
está desativado. Além disso,short_open_tag
está desativado como padrão para evitar conflitos com XML.<?php $foo='ABC'; echo '<div>', $foo, '</div>'
e<?php $foo='ABC'; ?><div><?=$foo?></div>
resultam exatamente nos mesmos opcodes, ou seja, são idênticos.<li>{$thing}</li>
como mostrou, com a vantagem das aspas duplas, de que não precisa escapar das aspas duplas dentro dela. Você também pode atribuir o heredoc ou passá-lo para funções, por isso é muito mais limpo que o php / html se você o estiver usando em blocos, por exemplo.array_reduce($items, function($s, $item) { $name = htmlspecialchars($item['name']); return $s . <<< EOT <li>{$name}: {$item['price']}</li> EOT; })
Você está aprendendo, esqueça o desempenho nas páginas PHP. Em vez disso, escolha a maneira mais fácil de ler .
Olhando para seus dois exemplos, o segundo é definitivamente mais fácil de ler, embora eu ache que é por causa do espaçamento que você usou. Você diz que deseja desenvolver bons hábitos desde o início, acho que seu tempo pode ser melhor gasto fazendo seu código ser lido bem. Isso pode significar reescrever uma seção várias vezes até que você esteja feliz com ela.
Se você está realmente interessado nos bastidores, explicarei o que acontece com o conteúdo estático em uma página PHP. Uma das primeiras coisas é "analisar" a página inteira em código executável (como você vê entre as
<?php ?>
tags). Uma parte disso é transformar qualquer texto estático em umecho
.Então, é isso:
é transformado em algo como:
Há um custo muito pequeno associado à análise, mas não há diferença na execução do código resultante. Se você estiver usando um acelerador PHP, a análise será feita apenas uma vez e depois armazenada em cache, para que você não veja diferença de desempenho após o carregamento da primeira página.
Lembre-se: fácil de ler!
fonte
echo
, se você quer dizer isso literalmente (o que seu idioma implica). O resultado é o mesmo, mas os métodos são muito diferentes. O que você chama de "texto estático" está de fato escapando do PHP para o HTML. Quando isso acontece, o servidor começa a enviar texto não processado. Ele não o analisa via PHP, como faria comecho
. As implicações de desempenho são provavelmente pequenas em qualquer circunstância não planejada, mas a diferença mecanicista é importante.Uma das melhores características do PHP foi que ele foi projetado para ser incorporado em HTML. Geralmente é usado na criação de modelos. Isso torna seu código mais fácil de ler e manter, porque separa o código PHP do HTML.
Mas se você estiver imprimindo apenas uma página estática como "Olá, mundo!" É uma má idéia.
fonte
Para responder sua pergunta simplesmente: dado seu código de exemplo, haverá pouca ou nenhuma diferença no desempenho. O PHP é processado no nível do servidor / host, enquanto o HTML é processado pelo agente / pessoa do usuário que olha a sua página da web no navegador. Quem será mais rápido? Difícil de determinar.
Concordo com outros que dizem que cada um tem seus pontos fortes e fracos e podem trabalhar muito bem juntos. O PHP é programável e pode fazer cálculos e trabalhar com variáveis. Por esse motivo, todas as minhas páginas acabam sendo PHP e recorrem a trechos de modelos de código HTML, como mencionado, e inserem variáveis para que meu HTML se torne dinâmico.
No seu exemplo, você pode agrupar o HTML em uma instrução PHP da seguinte forma:
Espero que ajude a esclarecer um pouco.
fonte
existem limitações no uso de HTML no PHP.
Na maioria das vezes você teria seu HTML fora. Você criaria uma página da mesma forma que faria se não estivesse usando o PHP e, em seguida, adicione o PHP nas áreas do documento onde precisar. Você pode ter vários pedaços de PHP em um documento.
fonte
Geralmente, é considerado uma forma incorreta gerar código HTML a partir do PHP. Existem várias razões para isso, mas a principal é que é mais fácil, especialmente a longo prazo, manter o código se o código HTML e PHP estiver separado.
É como HTML, CSS e Javascript; é muito mais fácil e prático mantê-lo separado.
Tecnicamente, no entanto, não faz absolutamente nenhuma diferença como você produz coisas. Para o PHP, são apenas bytes seguidos.
fonte
<?php echo 'hello'; ?>
é passado para o PHP.hello
não é passado para o PHP. Tudo o que é passado para o PHP é convertido em bytecode e depois interpretado. Isso leva tempo, poder de processamento e eletricidade.