API
Toda a interface estática fica em uma classe: TailwindPHP\tw (um alias da classe interna Tailwind). Todos os métodos podem ser chamados estaticamente, e os métodos de inspeção (properties, computedProperties, value, computedValue) aceitam os formatos de entrada descritos no fim desta página.
Para repetir operações com a mesma configuração de CSS, chame tw::compile() uma vez e reutilize o TailwindCompiler retornado.
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
Analisa o conteúdo, extrai candidatos a classes e retorna o CSS gerado. O padrão $css é @import "tailwindcss";, que inclui tema, preflight e utilitários. Retorna 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,
]);
A forma de array aceita estas chaves:
| Chave | Tipo | Finalidade |
|---|---|---|
content |
string |
Conteúdo a ser analisado em busca de candidatos a classes (obrigatório) |
css |
string |
Entrada CSS com diretivas Tailwind (padrão @import "tailwindcss";) |
minify |
bool |
Minificar a saída (padrão false) |
importPaths |
string | array | callable | null |
Carregar CSS do sistema de arquivos com resolução completa de @import — consulte Importação de CSS |
cache |
bool | string |
Ativar o cache de arquivos — consulte Cache |
cacheTtl |
int |
Duração do cache em segundos |
tw::compile()
public static function compile(string $css = '@import "tailwindcss";', array $options = []): TailwindCompiler
Cria um TailwindCompiler reutilizável vinculado à CSS informada. A análise e a construção do sistema de design acontecem uma única vez, tornando essa a opção eficiente para gerar CSS para várias strings de conteúdo diferentes. Use generate() para acumular uma folha de estilos em várias chamadas ou generateExact() para gerar saídas independentes por página. Retorna 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">');
O array $options aceita:
| Opção | Tipo | Finalidade |
|---|---|---|
stateCacheFile |
string |
Caminho de um arquivo PHP que persiste o estado de construção do compilador entre requisições e processos — consulte Cache de estado do compilador |
polyfills |
int |
Quais alternativas emitir, como máscara de bits de TailwindPHP\POLYFILL_AT_PROPERTY (os padrões de @layer properties para variáveis @property) e TailwindPHP\POLYFILL_COLOR_MIX (alternativas de cores estáticas antes de color-mix()). Padrão POLYFILL_ALL; POLYFILL_NONE desativa ambas |
importSearchPaths |
array<string> |
Diretórios a pesquisar ao resolver @import no sistema de arquivos |
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 instância do TailwindCompiler para ver toda a interface de instância.
tw::properties()
public static function properties(string|array $input, string $css = '@import "tailwindcss";'): array
Retorna as propriedades CSS brutas de uma classe, mantendo as variáveis CSS sem resolução. Retorna array<string, string> (nome da propriedade → 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(), mas com cada variável CSS resolvida para um valor concreto. Retorna 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
Retorna o valor bruto de uma única classe utilitária. Retorna ?string — null se o utilitário não for encontrado.
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
Retorna o valor resolvido de uma única classe utilitária. Retorna ?string — null se o utilitário não for encontrado.
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
Extrai nomes de classes Tailwind do conteúdo (lê os atributos class e className). Retorna 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
Extrai candidatos a nomes de classes de todas as strings entre aspas simples ou duplas no código-fonte. Isso serve para templates que montam listas de classes em variáveis, em vez de atributos class. Cada string é dividida nos espaços em branco e todos os tokens que parecem nomes de classes são mantidos. Retorna 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);
Palavras simples também passam na verificação (hello, world acima); elas não geram nada, a menos que por acaso sejam nomes de utilitários. Passe o resultado para css(), pois generate() lê apenas atributos class.
tw::cssMap()
public static function cssMap(string $css = '@import "tailwindcss";'): array
Cria um mapa reverso de declarações CSS para classes utilitárias, útil para converter CSS existentes em classes Tailwind. As chaves são strings "property: value" com as variáveis resolvidas (utilitários com várias propriedades também recebem uma chave "prop: value; prop: value"); os valores são nomes de classes. Retorna 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'
O mapa abrange uma lista fixa de utilitários comuns (display, posição, flexbox, tipografia, etapas de espaçamento e dimensionamento, bordas, cores preto/branco/transparente e semelhantes), não todos os utilitários ou cores do tema. O argumento $css altera os valores resolvidos desses utilitários, mas tokens personalizados do tema (como --color-brand) não adicionam entradas.
tw::minify()
public static function minify(string $css): string
Minifica uma string CSS arbitrária: remove comentários, compacta espaços em branco, encurta cores hexadecimais (#ffffff → #fff), remove unidades de valores zero (0px → 0) e muito mais. Retorna string.
Para CSS que TailwindPHP gera por conta própria, prefira a opção minify (tw::generate(['minify' => true])) ou o parâmetro $minify dos métodos do compilador. Esse caminho minifica durante a serialização, o que é mais rápido e preserva seletores descendentes :not() que a etapa baseada em strings elimina.
use TailwindPHP\tw;
$css = tw::generate('<div class="flex p-4">');
$minified = tw::minify($css);
Consulte Cache e minificação para ver todas as otimizações.
tw::clearCache()
public static function clearCache(string|bool|null $cache = true): int
Exclui arquivos CSS em cache. Passe true (ou omita) para usar o diretório de cache padrão, ou uma string de caminho para um diretório personalizado. Retorna int — o número de arquivos excluídos.
use TailwindPHP\tw;
tw::clearCache(); // default directory
tw::clearCache('/path/to/cache'); // custom directory
Também há uma função TailwindPHP\clearCache() independente disponível.
tw::colors()
public static function colors(string $css = '@import "tailwindcss";'): array
Retorna todos os valores de cores do tema. Retorna array<string, string> (nome da cor → 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
Retorna todos os valores de pontos de quebra do tema. Retorna array<string, string> (nome do ponto de quebra → 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
Retorna os valores de espaçamento personalizados do tema. Retorna array<string, string> (nome do espaçamento → 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
Os métodos de inspeção (generate, properties, computedProperties, value, computedValue) aceitam três formatos de entrada:
| Formato | Exemplo |
|---|---|
| Apenas string | tw::generate('<div class="flex">') |
| String + string CSS | tw::generate('<div class="flex">', '@import "tailwindcss"; @theme { ... }') |
Array com content (+ css opcional) |
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 instância do TailwindCompiler
O objeto retornado por tw::compile() expõe a mesma interface de inspeção da classe estática, vinculada à CSS com a qual foi compilado. Use-o para evitar analisar o tema novamente em cada chamada.
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
Geração acumulativa e exata
generate() e css() acumulam: cada chamada adiciona seus candidatos ao conjunto crescente do compilador, e a folha de estilos retornada abrange tudo que foi visto até então. Isso funciona bem para criar uma única folha de estilos a partir de vários templates.
generateExact() e cssExact() compilam exatamente o conteúdo ou os candidatos informados em cada chamada, sem reaproveitar dados de chamadas anteriores, mas ainda reutilizando o sistema de design analisado pelo compilador. A saída corresponde à que uma tw::generate() nova do mesmo conteúdo produziria. Essa é a maneira mais rápida de gerar CSS por página com um compilador de longa duração:
use TailwindPHP\tw;
$compiler = tw::compile($themeCss);
foreach ($pages as $slug => $html) {
$perPageCss[$slug] = $compiler->generateExact($html, true);
}
Os quatro métodos aceitam um sinalizador $minify opcional que gera CSS minificado durante a serialização, idêntico byte a byte a tw::generate(['minify' => true]) e mais econômico do que minificar depois a saída formatada.
Inspetores avançados
Para inspecionar diretamente o 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
Eles retornam estruturas internas; consulte Arquitetura para saber o que elas contêm.
Funções de baixo nível
A classe tw reúne um conjunto de funções com namespace em TailwindPHP. Elas são úteis quando você precisa do resultado bruto da compilação, em vez de um TailwindCompiler:
| Função | Finalidade |
|---|---|
compile(string $css, array $options = []): array |
Analisa e compila CSS. Retorna build (acumulativo) e closures buildExact que recebem candidatos e um sinalizador $minify opcional, além de sources, root, features e designSystem. Aceita as mesmas opções que tw::compile(), exceto stateCacheFile |
StateCache\compileCssCached(string $css, string $cacheFile, array $options = []): array |
compile() com o cache de estado do compilador persistente |
parseCssState(), finalizeCssState(), compileParsed() |
As duas etapas da análise (um estado serializável e, em seguida, as closures recriadas a partir dele) e a etapa final de montagem usada por compileCssCached(). parseCss() e compileAst() continuam sendo os equivalentes de uma única etapa |
use function TailwindPHP\compile;
$compiled = compile('@import "tailwindcss";');
$css = $compiled['build'](['flex', 'p-4'], true); // minified
Cache
tw::generate() pode armazenar CSS compilado em disco para que entradas idênticas não precisem ser recompiladas.
| Opção | Tipo | Padrão | Finalidade |
|---|---|---|---|
cache |
bool | string |
false |
true ativa o diretório padrão; uma string de caminho armazena o cache nesse local |
cacheTtl |
int |
nenhum | Duração do cache em segundos; as entradas expiradas são recompiladas |
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
]);
A chave do cache deriva do conteúdo, da configuração de CSS e da opção minify, então entradas diferentes geram arquivos de cache diferentes. Limpe as entradas com tw::clearCache() ou com a função TailwindPHP\clearCache() independente.
Para consultar o guia detalhado, veja Cache e minificação.