API
Toda la superficie estática reside en una sola clase: TailwindPHP\tw (un alias de la clase interna Tailwind). Todos sus métodos se pueden llamar de forma estática, y los métodos de inspección (properties, computedProperties, value, computedValue) aceptan los formatos de entrada descritos al final de esta página.
Para trabajar repetidamente con la misma configuración de CSS, llame una vez a tw::compile() y reutilice el objeto TailwindCompiler devuelto.
use TailwindPHP\tw;
$css = tw::generate('<div class="flex items-center p-4 bg-blue-500">');
tw::generate()
public static function generate(string|array $input, string $css = '@import "tailwindcss";'): string
Analiza el contenido, extrae candidatos de clase y devuelve el CSS generado. El $css predeterminado es @import "tailwindcss";, que incluye tema, preflight y utilidades. Devuelve string.
use TailwindPHP\tw;
// String input
$css = tw::generate('<div class="flex p-4">');
// String with custom CSS
$css = tw::generate('<div class="flex bg-brand">', '@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');
// Array input with options
$css = tw::generate([
'content' => '<div class="flex p-4">',
'css' => '@import "tailwindcss";',
'minify' => true,
]);
La forma de matriz acepta estas claves:
| Clave | Tipo | Propósito |
|---|---|---|
content |
string |
Contenido que se analizará para encontrar candidatos de clase (obligatorio) |
css |
string |
Entrada CSS con directivas Tailwind (valor predeterminado @import "tailwindcss";) |
minify |
bool |
Minificar la salida (valor predeterminado false) |
importPaths |
string | array | callable | null |
Cargar CSS desde el sistema de archivos con resolución completa de @import; consulte Importación de CSS |
cache |
bool | string |
Activar la caché de archivos; consulte Caché |
cacheTtl |
int |
Duración de la caché en segundos |
tw::compile()
public static function compile(string $css = '@import "tailwindcss";', array $options = []): TailwindCompiler
Crea un TailwindCompiler reutilizable asociado a la CSS indicada. El análisis y la construcción del sistema de diseño se realizan una sola vez, por lo que es la opción eficiente para generar CSS a partir de muchas cadenas de contenido distintas. Use generate() para acumular una hoja de estilos en varias llamadas o generateExact() para generar una salida independiente por página. Devuelve TailwindCompiler.
use TailwindPHP\tw;
// Default Tailwind
$compiler = tw::compile();
// Custom CSS
$compiler = tw::compile('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');
$css = $compiler->generate('<div class="flex p-4 bg-brand">');
La matriz $options acepta:
| Opción | Tipo | Propósito |
|---|---|---|
stateCacheFile |
string |
Ruta de un archivo PHP que conserva el estado de construcción del compilador entre solicitudes y procesos; consulte Caché del estado del compilador |
polyfills |
int |
Qué alternativas emitir, como máscara de bits de TailwindPHP\POLYFILL_AT_PROPERTY (valores predeterminados de @layer properties para variables @property) y TailwindPHP\POLYFILL_COLOR_MIX (alternativas de color estáticas antes de color-mix()). Valor predeterminado POLYFILL_ALL; POLYFILL_NONE desactiva ambas |
importSearchPaths |
array<string> |
Directorios donde buscar @import al resolverlos desde el sistema de archivos |
use TailwindPHP\tw;
use const TailwindPHP\POLYFILL_NONE;
// Cache construction state on disk, reused by later requests
$compiler = tw::compile('@import "tailwindcss";', [
'stateCacheFile' => __DIR__ . '/cache/tailwind-state.php',
]);
// Plain output without fallbacks, e.g. for CSS modules
$compiler = tw::compile('@import "tailwindcss/utilities.css";', [
'polyfills' => POLYFILL_NONE,
]);
$compiler->generate('<div class="bg-red-500/50">');
// .bg-red-500\/50 { background-color: color-mix(in oklab, var(--color-red-500) 50%, transparent); }
// (with the default, a `#fb2c3680` fallback comes first and color-mix() moves into @supports)
Consulte Métodos de instancia de TailwindCompiler para ver toda la interfaz de instancia.
tw::properties()
public static function properties(string|array $input, string $css = '@import "tailwindcss";'): array
Devuelve las propiedades CSS sin procesar de una clase, con las variables CSS sin resolver. Devuelve array<string, string> (nombre de propiedad → valor).
use TailwindPHP\tw;
tw::properties('p-4');
// ['padding' => 'calc(var(--spacing) * 4)']
tw::properties(['flex', 'items-center', 'p-4']);
// ['display' => 'flex', 'align-items' => 'center', 'padding' => 'calc(var(--spacing) * 4)']
tw::computedProperties()
public static function computedProperties(string|array $input, string $css = '@import "tailwindcss";'): array
Como properties(), pero resuelve todas las variables CSS a valores concretos. Devuelve array<string, string>.
use TailwindPHP\tw;
tw::computedProperties('p-4');
// ['padding' => '1rem']
tw::computedProperties('text-blue-500');
// ['color' => 'oklch(62.3% .214 259.815)']
tw::computedProperties(['flex', 'items-center', 'gap-4']);
// ['display' => 'flex', 'align-items' => 'center', 'gap' => '1rem']
tw::value()
public static function value(string|array $input, string $css = '@import "tailwindcss";'): ?string
Devuelve el valor sin procesar de una sola clase de utilidad. Devuelve ?string — null si no se encuentra la utilidad.
use TailwindPHP\tw;
tw::value('p-4'); // 'calc(var(--spacing) * 4)'
tw::value('text-blue-500'); // 'var(--color-blue-500)'
tw::computedValue()
public static function computedValue(string|array $input, string $css = '@import "tailwindcss";'): ?string
Devuelve el valor resuelto de una sola clase de utilidad. Devuelve ?string — null si no se encuentra la utilidad.
use TailwindPHP\tw;
tw::computedValue('p-4'); // '1rem'
tw::computedValue('text-blue-500'); // 'oklch(62.3% .214 259.815)'
tw::computedValue('gap-4'); // '1rem'
tw::extractCandidates()
public static function extractCandidates(string $html): array
Extrae nombres de clase de Tailwind del contenido (lee los atributos class y className). Devuelve array<string>.
use TailwindPHP\tw;
tw::extractCandidates('<div class="flex p-4" className="bg-blue-500">');
// ['flex', 'p-4', 'bg-blue-500']
tw::extractCandidatesFromStrings()
public static function extractCandidatesFromStrings(string $source): array
Extrae candidatos a nombres de clase de cada cadena entre comillas simples o dobles en el código fuente, para plantillas que construyen listas de clases en variables en vez de atributos class. Divide cada cadena por espacios en blanco y conserva todos los tokens que parecen nombres de clase. Devuelve array<string>.
use TailwindPHP\tw;
$classes = tw::extractCandidatesFromStrings('<?php $wrap = \'p-4 sm:flex\'; $title = "hello world"; ?>');
// ['p-4', 'sm:flex', 'hello', 'world']
$css = tw::compile()->css($classes);
Las palabras comunes también pasan la comprobación (hello, world arriba); no generan nada al compilar, a menos que coincidan con nombres de utilidades. Pase el resultado a css(), ya que generate() solo lee atributos class.
tw::cssMap()
public static function cssMap(string $css = '@import "tailwindcss";'): array
Crea un mapa inverso de declaraciones CSS a clases de utilidad, útil para convertir CSS existentes en clases Tailwind. Las claves son cadenas "property: value" con las variables resueltas (las utilidades con varias propiedades también tienen una clave "prop: value; prop: value"); los valores son nombres de clase. Devuelve array<string, string>.
use TailwindPHP\tw;
$map = tw::cssMap();
$map['display: flex']; // 'flex'
$map['padding: 1rem']; // 'p-4'
$map['text-align: center']; // 'text-center'
$map['color: #fff']; // 'text-white'
El mapa abarca una lista fija de utilidades comunes (visualización, posición, flexbox, tipografía, espaciado y tamaños, bordes, colores negro, blanco y transparente, entre otras), no todas las utilidades ni todos los colores del tema. El argumento $css cambia los valores resueltos de esas utilidades, pero los tokens de tema personalizados (como --color-brand) no añaden entradas.
tw::minify()
public static function minify(string $css): string
Minifica una cadena CSS arbitraria: elimina comentarios, reduce espacios en blanco, acorta colores hexadecimales (#ffffff → #fff), elimina unidades de los valores cero (0px → 0) y más. Devuelve string.
Para el CSS que TailwindPHP genera por sí mismo, prefiera la opción minify (tw::generate(['minify' => true])) o el parámetro $minify de los métodos del compilador. Esa ruta minifica durante la serialización, lo que es más rápido y conserva los selectores :not() descendientes que el procesamiento de cadenas reduce.
use TailwindPHP\tw;
$css = tw::generate('<div class="flex p-4">');
$minified = tw::minify($css);
Consulte Caché y minificación para ver todas las optimizaciones.
tw::clearCache()
public static function clearCache(string|bool|null $cache = true): int
Elimina archivos CSS almacenados en caché. Pase true (o no indique nada) para usar el directorio de caché predeterminado, o una ruta para usar un directorio personalizado. Devuelve int: el número de archivos eliminados.
use TailwindPHP\tw;
tw::clearCache(); // default directory
tw::clearCache('/path/to/cache'); // custom directory
También está disponible una función TailwindPHP\clearCache() independiente.
tw::colors()
public static function colors(string $css = '@import "tailwindcss";'): array
Devuelve todos los valores de color del tema. Devuelve array<string, string> (nombre del color → valor calculado).
use TailwindPHP\tw;
tw::colors();
// ['red-500' => 'oklch(63.7% .237 25.331)', 'blue-500' => 'oklch(62.3% .214 259.815)', ...]
// With a custom theme
tw::colors('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');
// [..., 'brand' => '#3b82f6']
tw::breakpoints()
public static function breakpoints(string $css = '@import "tailwindcss";'): array
Devuelve todos los valores de puntos de interrupción del tema. Devuelve array<string, string> (nombre del punto de interrupción → valor).
use TailwindPHP\tw;
tw::breakpoints();
// ['sm' => '40rem', 'md' => '48rem', 'lg' => '64rem', 'xl' => '80rem', '2xl' => '96rem']
tw::breakpoints('@import "tailwindcss"; @theme { --breakpoint-xs: 20rem; }');
// ['sm' => '40rem', ..., '2xl' => '96rem', 'xs' => '20rem']
tw::spacing()
public static function spacing(string $css = '@import "tailwindcss";'): array
Devuelve los valores de espaciado personalizados del tema. Devuelve array<string, string> (nombre del espaciado → valor).
use TailwindPHP\tw;
// TailwindCSS 4 uses a single --spacing base value rather than a --spacing-* namespace.
// This returns any custom --spacing-* values defined in the theme.
tw::spacing('@import "tailwindcss"; @theme { --spacing-huge: 10rem; }');
// ['huge' => '10rem']
Formatos de entrada
Los métodos de inspección (generate, properties, computedProperties, value, computedValue) aceptan tres formatos de entrada:
| Formato | Ejemplo |
|---|---|
| Solo cadena | tw::generate('<div class="flex">') |
| Cadena + cadena CSS | tw::generate('<div class="flex">', '@import "tailwindcss"; @theme { ... }') |
Matriz con content (+ opcional css) |
tw::generate(['content' => '<div class="flex">', 'css' => '@import "tailwindcss";']) |
use TailwindPHP\tw;
// Format 1: string only
tw::properties('p-4');
// Format 2: string + CSS
tw::properties('bg-brand', '@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');
// Format 3: array
tw::properties(['content' => 'p-4', 'css' => '@import "tailwindcss";']);
Métodos de instancia de TailwindCompiler
El objeto que devuelve tw::compile() expone las mismas funciones de inspección que la clase estática, asociadas al CSS con el que se compiló. Úselo para evitar volver a analizar el tema en cada llamada.
public function generate(string $content, bool $minify = false): string
public function css(array $candidates, bool $minify = false): string
public function generateExact(string $content, bool $minify = false): string
public function cssExact(array $candidates, bool $minify = false): string
public function extractCandidates(string $html): array
public function extractCandidatesFromStrings(string $source): array
public function properties(string|array $utilities): array
public function computedProperties(string|array $utilities): array
public function value(string $utility): ?string
public function computedValue(string $utility): ?string
public function minify(string $css): string
public function colors(): array
public function breakpoints(): array
public function spacing(): array
use TailwindPHP\tw;
$compiler = tw::compile('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');
$css = $compiler->generate('<div class="flex p-4 bg-brand">');
$candidates = $compiler->extractCandidates('<div class="flex p-4 bg-brand">');
$compiler->properties('bg-brand'); // ['background-color' => 'var(--color-brand)']
$compiler->computedProperties('bg-brand'); // ['background-color' => '#3b82f6']
$compiler->value('bg-brand'); // 'var(--color-brand)'
$compiler->computedValue('bg-brand'); // '#3b82f6'
$minified = $compiler->minify($css);
$compiler->colors(); // all color values
$compiler->breakpoints(); // all breakpoint values
$compiler->spacing(); // custom spacing values
Acumulación y generación exacta
generate() y css() acumulan: cada llamada añade sus candidatos al conjunto creciente del compilador y la hoja de estilos devuelta incluye todo lo visto hasta el momento. Esto sirve para crear una sola hoja de estilos a partir de varias plantillas.
generateExact() y cssExact() compilan exactamente el contenido o los candidatos indicados en cada llamada, sin conservar los de llamadas anteriores, pero reutilizan el sistema de diseño ya analizado del compilador. La salida coincide con la de una tw::generate() en frío del mismo contenido. Es la forma más rápida de generar CSS por página con un compilador de larga duración:
use TailwindPHP\tw;
$compiler = tw::compile($themeCss);
foreach ($pages as $slug => $html) {
$perPageCss[$slug] = $compiler->generateExact($html, true);
}
Los cuatro métodos aceptan una opción $minify opcional que genera CSS minificado durante la serialización, idéntico byte a byte a tw::generate(['minify' => true]) y más eficiente que minificar después la salida formateada.
Inspectores avanzados
Para inspeccionar directamente el estado compilado:
public function getTheme(): Theme
public function getDesignSystem(): object
public function getCompiled(): array
$compiler->getTheme(); // Theme object with resolved values
$compiler->getDesignSystem(); // Design system: utilities, variants, etc.
$compiler->getCompiled(); // Raw compiled state array
Estos métodos devuelven estructuras internas; consulte Arquitectura para saber qué contienen.
Funciones de bajo nivel
La clase tw envuelve varias funciones con espacio de nombres en TailwindPHP. Son útiles cuando necesita el resultado de compilación sin procesar en vez de un TailwindCompiler:
| Función | Propósito |
|---|---|
compile(string $css, array $options = []): array |
Analiza y compila CSS. Devuelve build (acumulativo) y cierres buildExact que reciben candidatos y un indicador $minify opcional, además de sources, root, features y designSystem. Acepta las mismas opciones que tw::compile(), excepto stateCacheFile |
StateCache\compileCssCached(string $css, string $cacheFile, array $options = []): array |
compile() con la caché persistente del estado del compilador |
parseCssState(), finalizeCssState(), compileParsed() |
Las dos etapas del análisis (un estado serializable y luego los cierres reconstruidos a partir de él) y el paso final de ensamblaje que usa compileCssCached(). parseCss() y compileAst() siguen siendo las alternativas equivalentes de un solo paso |
use function TailwindPHP\compile;
$compiled = compile('@import "tailwindcss";');
$css = $compiled['build'](['flex', 'p-4'], true); // minified
Caché
tw::generate() puede almacenar en caché en disco CSS compilado para omitir la recompilación de entradas idénticas.
| Opción | Tipo | Predeterminado | Propósito |
|---|---|---|---|
cache |
bool | string |
false |
true activa el directorio predeterminado; una ruta guarda la caché allí |
cacheTtl |
int |
ninguno | Duración de la caché en segundos; las entradas caducadas se vuelven a compilar |
use TailwindPHP\tw;
// Default directory: sys_get_temp_dir() . '/tailwindphp'
$css = tw::generate([
'content' => '<div class="flex p-4">',
'cache' => true,
]);
// Custom directory + TTL
$css = tw::generate([
'content' => '<div class="flex p-4">',
'cache' => '/path/to/cache',
'cacheTtl' => 3600, // expire after 1 hour
]);
La clave de caché se deriva del contenido, la configuración de CSS y la opción minify, por lo que entradas distintas generan archivos de caché diferentes. Elimine entradas con tw::clearCache() o con la función independiente TailwindPHP\clearCache().
Consulte la guía detallada Caché y minificación.