Que yo sepa, hay tres maneras de trabajar las CSS con PHP.
a) Una es preparar un documento php definiendo en la primera línea el header como css:
<?php header("Content-type: text/css; charset: UTF-8"); ?>
Luego en el resto del código se pueden recoger y tratar las variables que se necesiten para definir las css como si estuviéramos tratando cualquier documento php:
$colorPersonalizado = "#ededed";
.miEstilo {
color: <?= $colorPersonalizado; ?>;
}
b) Otra es abrir el documento css (o uno html) antes de enviarlo y escribir las css que necesitemos. Por ejemplo, para una cosa del trabajo, primero cojo de una tabla unos colores personalizados:
$todoColores = $this->nld_Personalizacion->getColoresLibro($idLibro);
...armo una cadena:
$cadena = ".textPrimary { color:#".$todoColores['color1']." }
.borderPrimary { border-bottom:1px solid #".$todoColores['color1']." }
.textPrimaryLight { color: #".$todoColores['color2']." }
.textSecondary { color: #".$todoColores['color3']." }
....
Y la enchufo en un documento que creo dinámicamente:
$rutaEstiloPersonalizado = $destino."css/colors.css";
$archivo = fopen($rutaEstiloPersonalizado, 'aw');
fwrite($archivo, $cadena);
fclose($archivo);
c) Y una tercera forma, variante de la anterior, es abrir un documento, almacenarlo en una variable (que es una cadena) sobrescribir lo que sea y luego "escupirlo" xD con un echo.
Por ejemplo, para otra cosa del curro, abro el archivo principal:
$pagina_inicio = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/ruta/index.html');
...obtengo unos colores que están definidos en una base de datos, los armo en una cadena:
$todoColores = $this->nld_Personalizacion->getColoresLibro($idLibro);
$cadena = "<style type='text/css'>";
$cadena .= ".borderPrimary { border-bottom: 1px solid #".$todoColores['color1']."; }
.textPrimary { color:#".$todoColores['color1']."; }
.textPrimaryLight { color: #".$todoColores['color2']."; }
...
.bgSecondaryLight { background: #".$todoColores['color4']."; }";
$cadena .= "</style>";
...reemplazo una cadena del archivo original por la cadena que acabo de armar dinámicamente.
$pagina_inicio = str_replace('<link rel="stylesheet" href="ruta/colors.css">', $cadena, $pagina_inicio);
...y ya solo falta lanzarlo con un echo.
echo $pagina_inicio;