Layout em PHP

Artigo que discute algumas características da linguagem PHP para suporte ao layout de sites, especialmente a capacidade de ser embutível no HTML.

Apesar de gostar e apoiar o PHP, não gosto de uma de suas características mais marcantes: o fato de ser uma linguagem "embutida" no HTML. Ou seja, a linguagem possui delimitadores de código e tudo que fica fora dos delimitadores são considerados blocos de texto que devem ser enviados diretamente para saída padrão (normalmente um código HTML).

Esta característica dá ao PHP a possibilidade de montar um layout essencialmente HTML, mas com pequenos trechos de código PHP. Isso é útil para uma equipe de desenvolvimento ficar focada no HTML + CSS e outra equipe ficar focada no PHP. Porém, o que ocorre normalmente (pelo menos no Brasil) é algo muito diferente. Programadores iniciantes aproveitam o fato de PHP poder ser embutido no HTML e fazem gigantescos blocos de código PHP embutido em um HTML. Isso torna o código muito confuso e de difícil manutenção. Por este motivo, penso que seria melhor nem existir este recurso.

Sim, existem formas alternativas para possibilitar tal recurso. Por exemplo, montar um HTML base e o PHP ler este HTML, embutindo o código em posições estratégicas e depois retornando um HTML final. Por exemplo, utilizando DOM.

Porém, não costumo usar nem o recurso, nem a alternativa. Costumo criar métodos que geram elementos do HTML. Por exemplo, gerar uma lista, uma tabela, etc. Com isso, além de facilitar a forma como tais elementos são montados, também facilita a atualização da versão do HTML. Por exemplo, quem vai migrar de HTML 4.01 para HTML 5, basta mudar os métodos que geram o HTML.

Outra forma, um pouco mais avançada, é utilizar XSLT. Esta linguagem, que é baseada em XML, serve (basicamente) para transformar um XML em outro. Com isso, é possível que uma aplicação gere um XML que é convertido em XHTML com a utilização de XSLT. A linguagem também permite outras coisas, como ordenar elementos de uma lista, reformatar textos, etc.

5 comentários

Rafael Pereira Laurindo disse...

Concordo plenamente. Estou tentando entender melhor sobre XSLT e PHP justamente para isso. Odeio código maluco.

Lucas disse...

Prefiro usar templates, isso eu separo devez o html do php, eu uso o Smarty, mais ja vi muitos programadores experientes falar que não usa, gostaria de saber porque eles pensam assim e o que é melhor que templates?

Rubens Takiguti Ribeiro (autor do blog) disse...

Lucas, eu não sou contra o uso do Smarty, sou contra "embutir" (entenda "misturar desordenadamente") uma tonelada de código PHP dentro do HTML.
Acho que templates são muito bons quando a equipe possuem webdesigners de um lado e programadores de outro. Quando só há programadores, acho melhor helpers em todos os níveis (do layout da página aos pequenos elementos).

Lucas disse...

Eu nunca vi essa forma, antes de eu usar templates, eu so imprimia dentro do HTML, exemplo:



html
body

/body
/html
Falou.