Molti programmatori si trovano spesso davanti all’esigenza di inserire codice PHP dentro un foglio di stile CSS. Se ignoriamo lo svantaggio di performance che il nostro web server dovrà subire richiamando un’istanza PHP invece che servire un file statico al client, possiamo considerarlo utile per moltissime cose, ad esempio per definire i colori in base a dei valori specificati in un pannello di configurazione, aggiungere codice CSS in base alla stringa di user agent, eliminare codice CSS.
Esistono due soluzioni diverse che uso normalmente nei siti, la prima è quella di inserire nella sezione HEAD un link allo stylesheet con estensione .php ad esempio stile.php, l’altra è quella di indicare il link con estensione .css ma obbligare il server ad eseguire un’istanza PHP.
<link rel="stylesheet" href="http://miosito.com/stile.php"> // primo esempio <link rel="stylesheet" href="http://miosito.com/stile.css"> // secondo esempio
Nel primo caso il nostro server web se ha PHP installato e configurato correttamente eseguirà la chiamata eseguendo anche le istruzioni php che troverà dentro il file, l’unico problema che essendo un file di tipo .php restituirà al browser un mimetype text/html che nel nostro caso non va assolutamente bene in quanto il browser dovrà ricevere text/css. Per ovviare a questo problema basterà aggiungere come prima istruzione la funzione php header():
<?php header("Content-type: text/css; charset: UTF-8"); ?>
<?php // Qui inserite le vostre istruzioni PHP o funzione include() ?>
body {
margin:0;
color: <?php echo $colore ?>;
border-style:none;
}
Nel secondo caso, se vogliamo mantenere l’estensione .css, che oltre ad essere una soluzione più elegante, nasconde all’utente l’informazione che il file viene processato da un’interprete PHP, dobbiamo dire al nostro server web di trattare questa estensione come un file PHP, in caso contrario il server lo consegnerebbe al browser come una qualsiasi risorsa statica senza elaborare le istruzioni che sono state inserite dentro. Per fare questo bisogna inserire un’istruzione sul nostro file .htaccess presente nella directory principale del sito.
AddType application/x-httpd-php .css
Il file stile.css avrebbe lo stesso contenuto dell’esempio riportato precedentemente, con una possibilità in più se si vuole essere dei veri perfezionisti, cioè eliminare l’istruzione header() e aggiungere queste righe sul file .htaccess, che demandano il lavoro di modificare il mimetype di ritorno in text/css direttamente al vostro server web apache.
<files *.css> ForceType text/css </files>
Se volete approfondire l’argomento vi consiglio questo articolo scritto in inglese dove trovate un’esempio di foglio CSS sviluppato tutto in php. Supercharge Your CSS with PHP.
Metodi alternativi: Il metodo che abbiamo analizzato è chiamato elaborazione lato server, ci possono essere dei casi dove si preferisca l’elaborazione lato client, a me personalmente non piacciono molto, in quanto sono difficili in fase di debug e necessitano di un framework aggiuntivo da caricare nel nostro browser. In ogni caso, ci possono essere delle situazioni dove questa tecnica può ritornare molto utile. LESS The dynamic stylesheet language.

