API
Cały statyczny interfejs znajduje się w jednej klasie: TailwindPHP\tw (alias wewnętrznej klasy Tailwind). Każdą metodę można wywołać statycznie, a metody inspekcji (properties, computedProperties, value, computedValue) przyjmują formaty wejściowe opisane na dole tej strony: formaty wejściowe.
Przy powtarzanej pracy z tą samą konfiguracją CSS wywołaj raztw::compile() i używaj ponownie zwróconego wynikuTailwindCompiler.
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
Analizuje treść, wyodrębnia kandydatów na klasy i zwraca wygenerowany CSS. Domyślny $css to @import "tailwindcss";, który uwzględnia motyw, preflight i utilities. Zwraca 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,
]);
Forma tablicowa przyjmuje następujące klucze:
| Klucz | Typ | Przeznaczenie |
|---|---|---|
content |
string |
Treść do skanowania w poszukiwaniu kandydatów na klasy (wymagane) |
css |
string |
Wejściowy CSS z dyrektywami Tailwind (domyślnie @import "tailwindcss";) |
minify |
bool |
Minifikacja wyniku (domyślnie false) |
importPaths |
string | array | callable | null |
Ładowanie CSS z systemu plików z pełnym rozwiązywaniem @import — zobacz Importowanie CSS |
cache |
bool | string |
Włączenie buforowania plików — zobacz Buforowanie |
cacheTtl |
int |
Czas życia pamięci podręcznej w sekundach |
tw::compile()
public static function compile(string $css = '@import "tailwindcss";', array $options = []): TailwindCompiler
Tworzy wielokrotnego użytku TailwindCompiler powiązane z podanym CSS. Parsowanie i tworzenie systemu projektowego odbywają się raz, dlatego jest to wydajny wybór przy generowaniu CSS dla wielu różnych ciągów treści. Użyj generate(), aby gromadzić jeden arkusz stylów między wywołaniami, albo generateExact(), aby uzyskać niezależny wynik dla każdej strony. Zwraca 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">');
Tablica $options przyjmuje:
| Opcja | Typ | Przeznaczenie |
|---|---|---|
stateCacheFile |
string |
Ścieżka do pliku PHP, który zachowuje stan konstrukcji kompilatora między żądaniami i procesami — zobacz Pamięć podręczna stanu kompilatora |
polyfills |
int |
Określa emitowane wartości zastępcze jako maskę bitową TailwindPHP\POLYFILL_AT_PROPERTY (wartości domyślne @layer properties dla zmiennych @property) oraz TailwindPHP\POLYFILL_COLOR_MIX (statyczne wartości zastępcze kolorów przed color-mix()). Domyślnie POLYFILL_ALL; POLYFILL_NONE wyłącza obie opcje |
importSearchPaths |
array<string> |
Katalogi przeszukiwane podczas rozwiązywania @import z systemu plików |
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)
Pełny zestaw metod instancji opisano w sekcji Metody instancji TailwindCompiler.
tw::properties()
public static function properties(string|array $input, string $css = '@import "tailwindcss";'): array
Zwraca surowe właściwości CSS dla klasy, pozostawiając nierozwiązane zmienne CSS. Zwraca array<string, string> (nazwa właściwości → wartość).
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
Podobnie jak properties(), ale rozwiązuje każdą zmienną CSS do konkretnej wartości. Zwraca 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
Zwraca surową wartość dla pojedynczej klasy utility. Zwraca ?string — null, jeśli utility nie zostanie znalezione.
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
Zwraca rozwiązaną wartość dla pojedynczej klasy utility. Zwraca ?string — null, jeśli utility nie zostanie znalezione.
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
Wyodrębnia nazwy klas Tailwind z treści (odczytuje atrybuty class i className). Zwraca 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
Wyodrębnia kandydatów na nazwy klas z każdego ciągu ujętego w pojedynczy lub podwójny cudzysłów w kodzie źródłowym. Przydaje się w szablonach, które budują listy klas w zmiennych zamiast w atrybutach class. Każdy ciąg jest dzielony według białych znaków, a każdy token przypominający nazwę klasy zostaje zachowany. Zwraca 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);
Zwykłe słowa również przechodzą kontrolę (hello, world powyżej); kompilują się do pustego wyniku, chyba że przypadkiem są nazwami utility. Przekaż wynik do css(), ponieważ generate() odczytuje tylko atrybuty class.
tw::cssMap()
public static function cssMap(string $css = '@import "tailwindcss";'): array
Buduje mapę odwrotną od deklaracji CSS do klas utility, przydatną do konwertowania istniejącego CSS na klasy Tailwind. Kluczami są ciągi "property: value" z rozwiązanymi zmiennymi (utility z wieloma właściwościami otrzymują również klucz "prop: value; prop: value"), a wartościami są nazwy klas. Zwraca 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'
Mapa obejmuje stałą listę popularnych utility (wyświetlanie, pozycjonowanie, flexbox, typografia, odstępy i rozmiary, obramowania, kolory czarny, biały i przezroczysty oraz podobne), a nie wszystkie utility czy kolory motywu. Argument $css zmienia rozwiązane wartości tych utility, ale własne tokeny motywu (takie jak --color-brand) nie dodają wpisów.
tw::minify()
public static function minify(string $css): string
Minifikuje dowolny ciąg CSS: usuwa komentarze, redukuje białe znaki, skraca kolory szesnastkowe (#ffffff → #fff), usuwa jednostki od wartości zerowych (0px → 0) i robi więcej. Zwraca string.
W przypadku CSS generowanego przez samo TailwindPHP lepiej użyć opcji minify (tw::generate(['minify' => true])) lub parametru $minify w metodach kompilatora. Ta ścieżka minifikuje podczas serializacji, co jest szybsze i zachowuje selektory potomków :not(), które przebieg oparty na ciągu znaków scala.
use TailwindPHP\tw;
$css = tw::generate('<div class="flex p-4">');
$minified = tw::minify($css);
Pełny zestaw optymalizacji opisano w sekcji Buforowanie i minifikacja.
tw::clearCache()
public static function clearCache(string|bool|null $cache = true): int
Usuwa pliki CSS z pamięci podręcznej. Przekaż true (lub pomiń), aby użyć domyślnego katalogu pamięci podręcznej, albo ciąg ze ścieżką do katalogu niestandardowego. Zwraca int — liczbę usuniętych plików.
use TailwindPHP\tw;
tw::clearCache(); // default directory
tw::clearCache('/path/to/cache'); // custom directory
Dostępna jest również samodzielna funkcja TailwindPHP\clearCache().
tw::colors()
public static function colors(string $css = '@import "tailwindcss";'): array
Zwraca wszystkie wartości kolorów z motywu. Zwraca array<string, string> (nazwa koloru → obliczona wartość).
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
Zwraca wszystkie wartości punktów przerwania z motywu. Zwraca array<string, string> (nazwa punktu przerwania → wartość).
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
Zwraca niestandardowe wartości odstępów z motywu. Zwraca array<string, string> (nazwa odstępu → wartość).
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']
Formaty wejściowe
Metody inspekcji (generate, properties, computedProperties, value, computedValue) akceptują trzy formy wejścia:
| Format | Przykład |
|---|---|
| Tylko ciąg znaków | tw::generate('<div class="flex">') |
| Ciąg znaków + ciąg CSS | tw::generate('<div class="flex">', '@import "tailwindcss"; @theme { ... }') |
Tablica z content (+ opcjonalne 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";']);
Metody instancji TailwindCompiler
Obiekt zwracany przez tw::compile() udostępnia ten sam zestaw metod inspekcji co klasa statyczna, powiązany z CSS, z którym został skompilowany. Użyj go, aby uniknąć ponownego parsowania motywu przy każdym wywołaniu.
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
Generowanie narastające a dokładne
generate() i css() gromadzą dane: każde wywołanie dodaje swoich kandydatów do rosnącego zbioru kompilatora, a zwracany arkusz stylów obejmuje wszystko, co dotąd napotkano. Sprawdza się to w przypadku jednego arkusza stylów budowanego na podstawie kolejnych szablonów.
generateExact() i cssExact() kompilują przy każdym wywołaniu dokładnie podaną treść lub kandydatów, bez przenoszenia danych między wywołaniami, a jednocześnie ponownie wykorzystują sparsowany system projektowy kompilatora. Wynik odpowiada temu, co wygenerowałoby świeże tw::generate() dla tej samej treści. To najszybszy sposób tworzenia CSS dla poszczególnych stron za pomocą jednego długo działającego kompilatora:
use TailwindPHP\tw;
$compiler = tw::compile($themeCss);
foreach ($pages as $slug => $html) {
$perPageCss[$slug] = $compiler->generateExact($html, true);
}
Wszystkie cztery metody akceptują opcjonalną flagę $minify, która podczas serializacji emituje zminifikowane CSS, identyczne bajt w bajt z tw::generate(['minify' => true]) i tańsze niż późniejsza minifikacja czytelnego wyniku.
Zaawansowane inspektory
Bezpośrednia inspekcja skompilowanego stanu:
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
Zwracają one struktury wewnętrzne; informacje o ich zawartości znajdziesz w sekcji Architektura.
Funkcje niższego poziomu
Klasa tw opakowuje zestaw funkcji z przestrzeni nazw TailwindPHP. Przydają się, gdy potrzebujesz surowego wyniku kompilacji zamiast TailwindCompiler:
| Funkcja | Przeznaczenie |
|---|---|
compile(string $css, array $options = []): array |
Parsuje i kompiluje CSS. Zwraca build (narastająco) oraz domknięcia buildExact, które przyjmują kandydatów i opcjonalną flagę $minify, a także sources, root, features i designSystem. Przyjmuje te same opcje co tw::compile(), z wyjątkiem stateCacheFile |
StateCache\compileCssCached(string $css, string $cacheFile, array $options = []): array |
compile() z trwałą pamięcią podręczną stanu kompilatora |
parseCssState(), finalizeCssState(), compileParsed() |
Dwie części parsowania (stan możliwy do serializacji, a następnie odtworzone na jego podstawie domknięcia) oraz końcowy etap składania używany przez compileCssCached(). parseCss() i compileAst() pozostają odpowiednikami wykonującymi te czynności w jednym kroku |
use function TailwindPHP\compile;
$compiled = compile('@import "tailwindcss";');
$css = $compiled['build'](['flex', 'p-4'], true); // minified
Buforowanie
tw::generate() może zapisywać skompilowane CSS na dysku w pamięci podręcznej, aby identyczne dane wejściowe pomijały ponowną kompilację.
| Opcja | Typ | Domyślnie | Przeznaczenie |
|---|---|---|---|
cache |
bool | string |
false |
true włącza domyślny katalog; ciąg ze ścieżką wskazuje miejsce zapisu w pamięci podręcznej |
cacheTtl |
int |
brak | Czas życia pamięci podręcznej w sekundach; wygasłe wpisy są kompilowane ponownie |
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
]);
Klucz pamięci podręcznej jest wyprowadzany z treści, konfiguracji CSS i opcji minify, dlatego różne dane wejściowe tworzą różne pliki pamięci podręcznej. Wyczyść wpisy za pomocą tw::clearCache() lub samodzielnej funkcji TailwindPHP\clearCache().
Szczegółowe omówienie znajdziesz w sekcji Buforowanie i minifikacja.