+12

Dicas de estilo de programação

criado por Rubens Takiguti Ribeiro em 22/03/2010 1:43am
Embutindo HTML no PHP

Em alguns casos, pode ser necessário embutir código HTML em um código PHP, ou seja, o contrário do que foi apresentado anteriormente. Nestes casos, pode ser util a utilização da notação heredoc ou (desde a versão 5.3) a notação nowdoc.

Por serem pouco utilizadas, muitos programadores PHP desconhecem tais notações. A notação heredoc se asemelha com a notação de aspas duplas. Ela permite embutir variáveis internamente, mas tem a vantagem de não ser necessário escapar as aspas duplas para exibição.

Por exemplo;
echo <<<HTML
<div>
  <h1><a href="{$link}">{$nome}</a></h1>
  <p>Eu tenho R\$ 10,00.</p>
</div>
HTML;

A notação nowdoc é semelhante às aspas simples e não permite incluir variáveis internamente. Ela é útil para agrupar blocos de texto sem precisar escapar o símbolo "$", ao contrário do que ocorre na notação heredoc. Com isso, ela é útil, por exemplo, para mostrar códigos PHP ou outra linguagem que usa "$" como símbolo especial. Por exemplo:
echo <<<'HTML'
<p>Exemplo de "if" em PHP:</p>
<pre>
    if ($a > 10) {
        echo '$a é maior que 10';
    }
</pre>
HTML;

Comentários:

Mostrando 1 - 10 de 11 comentários
Cara... Muito bom! Aprendi, e muito, com este artigo!
10/05/2012 12:00pm (~12 anos atrás)

Parabéns pelo artigo! :-)

Por isso eu acho importante o uso de frameworks, pois eles seguem certos padrões de desenvolvimento e não vira bagunça.
31/03/2011 2:15am (~13 anos atrás)

Josué, a quantidade de memória usada pelo PHP em uma execução é limitada pela diretiva memory_limit, do php.ini. Você consegue alterar o valor dela em tempo de execução chamando a função ini_set:
ini_set('memory_limit', '128M');

Se não me engano, o padrão é 128M, que já é uma quantidade considerável. O conteúdo gerado por uma página normalmente tem de 50Kb a 300Kb. Em casos extremos, pode chegar a 1Mb, mas é muito abaixo de 128M.

Um detalhe que ajuda a usar menos memória é encapsular bem os métodos. Assim, as variáveis (não estáticas) criadas exclusivamente para os métodos são desalocadas assim que o método termina a execução. Ou, caso alguma variável gigante não precisa mais ser usada em determinado ponto do código, usa-se unset para desalocá-la.
18/01/2011 2:35pm (~13 anos atrás)

Josue Samuel disse:
Há tempos venho ensaiando criar um script com o layout html como o exemplo da página 2 do artigo em questão.

Depois, eu utilizaria uma variável única pra concatenar o conteúdo gerado por uma página em específico e, ao termino de todo o processamento, imprimí-la no local adequado conforme a abordagem do Carlos Eduardo Gomes Monteiro (segundo post de baixo pra cima).

Entretanto, ainda não me sinti confortável em somar essas duas abordagens em especial pelo fato de não ter tando controle da quantidade de dados armazenado na variável que daria o output do conteúdo. Esse desconforto de seve em eu não saber exatamente o tamanho/memória consumida que o PHP/servidor suportaria.

Alguém tem idéia qual o limite máximo de tamanho de uma variável e no que isso pode impactar para o servidor?
18/01/2011 12:20pm (~13 anos atrás)

Não conhecia o heredoc e nowdoc... bem interessante
21/11/2010 12:06pm (~13 anos atrás)

Cara, estou impressionado, cada dia que passa, descubro que conheço menos de PHP hehehe Parabéns !!!
30/09/2010 9:57am (~13 anos atrás)

Anderson disse:
Sou novo no site phpbrail, quero dar os parabéns pelo artigo, achei sensacional.
Abraço.

Anderson de Oliveira Morais.
28/09/2010 12:09pm (~13 anos atrás)

Filipe Mtro disse:
Acho interessante a forma de usar os arquivos .tpl com as variáveis, as vezes vejo coisa como %%TPL_RODAPE%% e Olá você tem %s créditos e %s de débitos.

Alguem pode me explicar o uso dessa tecnologia?
Eu realmente ainda não entendi.
15/06/2010 5:06am (~14 anos atrás)

Wake Up disse:
Muito bom!

Principalmente a parte sobre as notações "heredoc" e "nowdoc" (que eu desconhecia até então).

[]'s
Mario
08/06/2010 1:45pm (~14 anos atrás)

Ótimo artigo!!!
Duas coisas que gostaria de comentar.

Esta parte
$time = time();
foreach ($itens as $item) {
    if ($item->tamanho > $tamanho_minimo) {
        foreach ($item->elementos as $elemento) {
            if ($elemento->visivel) {
                echo '<p>';
                if ($data > $time) {
                    echo 'teste';
                }
                echo $elemento->nome;
                echo '</p>';
            }
        }
    }
}

Eu prefiro ao invés de imprimir, eu gosto sempre de atribuir a variaveis e fazer a impressão apenas no final.
Que inclusive, algo que você citou no começo de forma sutil mas não detalhada.
Eu sempre atribuo tudo à variaveis.
Deixando as impressões apenas para o final.
Pois assim, toda a execução do PHP seria feita, e apenas após concluir é que viria o HTML.
Isso ajuda muito em relação do uso de funções como header(), session_start() e etc...

Outro ponto importante que você comentou foi os parametros nas funções.
Isso realmente é um problema quando se cria muitos parametros.
Eu também faço como você as vezes, utilizando arrays para parametros opcionais.
Mas uma outra forma de faze-lo.
É em caso de métodos de uma classe, utilizar métodos GET e SET para determinar os parametros opcionais.
Ou seja, dentro da classe, já seta os atributos com valores padrões, e utilizando o SET apenas para o caso de setar um valor diferente do padrão.
Isto também dá mais clareza ao código, pois fica mais fácil de ser entendido, sendo que utilizando array, o programador vai ter que ler o código para entender como ele deve escrever o array com os valores opcionais...

Mas estes dois pontos é claro, é tudo uma questão de estilo né...
Só estou deixando o meu ponto de vista, quem sabe agrade alguem né...

Abraço a todos!!!
07/06/2010 12:07pm (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)