Normalmente a linguagem PHP é utilizada para gerar HTML dinamicamente. Porém, a linguagem PHP pode gerar qualquer tipo de arquivo, desde que se conheça a especificação do tipo de arquivo. Gerar um arquivo CSS dinamicamente é muito simples pois é um tipo de arquivo texto com uma sintaxe bastante simples.
Todo arquivo enviado do servidor para o cliente (navegador) através do protocolo HTTP precisa especificar o tipo de arquivo que está sendo trafegado. Isso é informado no cabeçalho HTTP. Quando se faz um script com extensão ".php" e não se define um tipo explicitamente, o servidor HTTP monta o cabeçalho HTTP com um tipo padrão, que normalmente é "text/html", mas isso pode ser configurado tanto no servidor (php.ini) quanto no script PHP.
No arquivo php.ini, pode ser definida a diretiva default_mimetype assim:
default_mimetype = "text/html"
No script PHP, o valor padrão de mimetype pode ser definido usando a função ini_set:
ini_set('default_mimetype', 'text/html');
Porém, isso é feito para se definir o valor padrão caso o tipo não seja especificado explicitamente. Para definir o tipo explicitamente, usa-se a função header, que deve ser chamada antes que qualquer informação seja impressa (com echo, print, ou semelhante).
Veja um exemplo de arquivo CSS gerado dinamicamente (chamado "teste.css.php"):
<?php $cor1 = isset($_COOKIE['cor1']) ? $_COOKIE['cor1'] : '#FFFFFF'; $cor2 = isset($_COOKIE['cor2']) ? $_COOKIE['cor2'] : '#000000'; header('Content-type: text/css; charset=UTF-8'); echo <<<ARQUIVO .erro { color: red; } .aviso { color: green; } #principal { background-color: {$cor1}; color: {$cor2}; } ARQUIVO;
Note que o arquivo é gerado com cores gravadas nos Cookies. Isso significa que o sistema pode ter alguma ferramenta em que o usuário possa configurar as cores desejadas e estes valores ficam guardados em Cookie (ou em BD, se preferir).
Fazer um CSS dinâmico também pode ser útil para especificar caminhos absolutos para arquivos de imagens, por exemplo.
Caso o script gere um arquivo que não sofre mudanças, é possível especificar um tempo em que ele possa ser guardado em cache do navegador. Caso contrário, o script será processado sempre que o usuário acessar uma página que precisa deste arquivo como estilo. Para isso, leia o post Cache de arquivos no navegador.
Uma observação é que o arquivo precisa ter extensão ".php" para ser processado pelo interpretador de PHP. Caso queira que os arquivos com extensão ".css" sejam processados, é necessário configurar o servidor para isso. No Apache, isso pode ser feito com a seguinte linha:
AddHandler php5-script .css
Mas como nem sempre sabemos se teremos a possibilidade de configurar o Apache adequadamente, a solução de usar extensão ".php" é mais portável.
Esta mesma ideia pode ser usada para gerar outros tipos de arquivos dinamicamente. Por exemplo, JavaScript dinâmico (tipo text/javascript) ou um TXT dinâmico (tipo text/plain).
0 comentários
Postar um comentário
Nota: fique a vontade para expressar o que achou deste artigo ou do blog.
Dica: para acompanhar as respostas, acesse com uma conta do Google e marque a opção "Notifique-me".
Atenção: o blogger não permite inclusão de tags nos comentários, por isso, use algum site externo para postar seu código com dúvidas e deixe o link aqui. Exemplo: pastebin.com