API
Цялата статична повърхност е в един клас: TailwindPHP\tw (псевдоним на вътрешния клас Tailwind). Всеки метод може да се извиква статично, а методите за инспекция (properties, computedProperties, value, computedValue) приемат форматите на входа, описани в края на тази страница.
При повтаряща се работа със същата конфигурация на CSS извикайте tw::compile() веднъж и използвайте повторно върнатата TailwindCompiler.
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
Анализира съдържанието, извлича кандидати за класове и връща генерирания CSS. Стойността по подразбиране за $css е @import "tailwindcss";, която включва темата, preflight и utilities. Връща 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,
]);
Формата с масив приема следните ключове:
| Ключ | Тип | Предназначение |
|---|---|---|
content |
string |
Съдържание за сканиране за кандидати за класове (задължително) |
css |
string |
Входен CSS с директиви Tailwind (по подразбиране @import "tailwindcss";) |
minify |
bool |
Минифициране на изхода (по подразбиране false) |
importPaths |
string | array | callable | null |
Зареждане на CSS от файловата система с пълно разрешаване на @import — вижте Импортиране на CSS |
cache |
bool | string |
Активиране на кеширане на файлове — вижте Кеширане |
cacheTtl |
int |
Време на живот на кеша в секунди |
tw::compile()
public static function compile(string $css = '@import "tailwindcss";', array $options = []): TailwindCompiler
Създава повторно използваем TailwindCompiler, обвързан с посочения CSS. Анализирането и изграждането на системата за дизайн се извършват веднъж, затова това е ефективният избор при генериране на CSS за много различни низове със съдържание. Използвайте generate(), за да натрупвате един стилов лист при всяко извикване, или generateExact() за независим изход за всяка страница. Връща 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">');
Масивът $options приема:
| Опция | Тип | Предназначение |
|---|---|---|
stateCacheFile |
string |
Път до файл PHP, който съхранява състоянието при създаване на компилатора между заявките и процесите — вижте Кеш на състоянието на компилатора |
polyfills |
int |
Кои резервни стойности да се изведат, като битова маска от TailwindPHP\POLYFILL_AT_PROPERTY (стойностите @layer properties по подразбиране за променливите @property) и TailwindPHP\POLYFILL_COLOR_MIX (статични резервни цветове преди color-mix()). По подразбиране POLYFILL_ALL; POLYFILL_NONE изключва и двете |
importSearchPaths |
array<string> |
Директории за търсене при разрешаване на @import от файловата система |
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)
Вижте Методи на инстанцията TailwindCompiler за пълния набор от методи на инстанцията.
tw::properties()
public static function properties(string|array $input, string $css = '@import "tailwindcss";'): array
Връща необработените свойства на CSS за клас, като променливите CSS остават неразрешени. Връща array<string, string> (име на свойство → стойност).
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
Подобно на properties(), но с всяка променлива CSS, разрешена до конкретна стойност. Връща 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
Връща необработената стойност за един utility клас. Връща ?string — null, ако utility не е намерен.
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
Връща разрешената стойност за един utility клас. Връща ?string — null, ако utility не е намерен.
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
Извлича имената на класове Tailwind от съдържанието (чете атрибутите class и className). Връща 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
Извлича кандидати за имена на класове от всеки низ в единични или двойни кавички в изходния код, за шаблони, които изграждат списъци с класове в променливи вместо в атрибутите class. Всеки низ се разделя по интервали и се запазва всеки токен, който прилича на име на клас. Връща 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);
Обикновените думи също преминават проверката (hello, world по-горе); те не компилират нищо, освен ако не са имена на utilities. Подайте резултата на css(), тъй като generate() чете само атрибутите class.
tw::cssMap()
public static function cssMap(string $css = '@import "tailwindcss";'): array
Изгражда обратна карта от декларации CSS към utility класове, полезна за преобразуване на съществуващ CSS в класове Tailwind. Ключовете са низове "property: value" с разрешени променливи (utilities с няколко свойства получават и ключ "prop: value; prop: value"), а стойностите са имена на класове. Връща 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'
Картата обхваща фиксиран списък с често използвани utilities (display, position, flexbox, типография, стъпки за отстъпи и размери, рамки, черен, бял и прозрачен цвят и подобни), а не всички utilities или цветове от темата. Аргументът $css променя разрешените стойности на тези utilities, но потребителски токени на темата (като --color-brand) не добавят записи.
tw::minify()
public static function minify(string $css): string
Минифицира произволен низ CSS: премахва коментари, свива интервалите, съкращава шестнадесетичните цветове (#ffffff → #fff), премахва единиците от нулевите стойности (0px → 0) и още. Връща string.
За CSS, генериран от самия TailwindPHP, предпочитайте опцията minify (tw::generate(['minify' => true])) или параметъра $minify в методите на компилатора. Този подход минифицира при сериализация, което е по-бързо и запазва селекторите :not() на потомците, които проходът през низ свива.
use TailwindPHP\tw;
$css = tw::generate('<div class="flex p-4">');
$minified = tw::minify($css);
Вижте Кеширане и минифициране за пълния набор от оптимизации.
tw::clearCache()
public static function clearCache(string|bool|null $cache = true): int
Изтрива кешираните файлове CSS. Подайте true (или пропуснете) за директорията на кеша по подразбиране, или низ с път за потребителска директория. Връща int — броя изтрити файлове.
use TailwindPHP\tw;
tw::clearCache(); // default directory
tw::clearCache('/path/to/cache'); // custom directory
Налична е и самостоятелна функция TailwindPHP\clearCache().
tw::colors()
public static function colors(string $css = '@import "tailwindcss";'): array
Връща всяка стойност за цвят от темата. Връща array<string, string> (име на цвят → изчислена стойност).
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
Връща всяка стойност за точка на прекъсване от темата. Връща array<string, string> (име на точка на прекъсване → стойност).
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
Връща потребителските стойности за отстъпи от темата. Връща array<string, string> (име на отстъп → стойност).
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']
Формати на входа
Методите за инспекция (generate, properties, computedProperties, value, computedValue) приемат три форми на вход:
| Формат | Пример |
|---|---|
| Само низ | tw::generate('<div class="flex">') |
| Низ + низ CSS | tw::generate('<div class="flex">', '@import "tailwindcss"; @theme { ... }') |
Масив с content (+ незадължителен 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";']);
Методи на инстанцията TailwindCompiler
Обектът, върнат от tw::compile(), предоставя същите методи за инспекция като статичния клас, обвързани с CSS, с който е компилиран. Използвайте го, за да избегнете повторно анализиране на темата при всяко извикване.
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
Натрупване и точно генериране
generate() и css() натрупват: всяко извикване добавя кандидатите си към нарастващия набор на компилатора и върнатият стилов лист обхваща всичко видяно досега. Това е подходящо за изграждане на един стилов лист в няколко шаблона.
generateExact() и cssExact() компилират точно зададеното съдържание или кандидати при всяко извикване, без пренасяне между извикванията, като същевременно използват повторно анализираната система за дизайн на компилатора. Изходът съвпада с този, който би произвел студен tw::generate() със същото съдържание. Това е най-бързият начин да изграждате CSS за всяка страница с един дълго живеещ компилатор:
use TailwindPHP\tw;
$compiler = tw::compile($themeCss);
foreach ($pages as $slug => $html) {
$perPageCss[$slug] = $compiler->generateExact($html, true);
}
И четирите метода приемат незадължителен флаг $minify, който извежда минифициран CSS при сериализация, идентичен до байт с tw::generate(['minify' => true]) и по-икономичен от последващо минифициране на форматирания изход.
Разширени инспектори
За директна проверка на компилираното състояние:
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
Те връщат вътрешни структури; вижте Архитектура за тяхното съдържание.
Функции от по-ниско ниво
Класът tw обгръща набор от функции с пространства от имена в TailwindPHP. Те са полезни, когато ви е нужен необработеният резултат от компилацията, а не TailwindCompiler:
| Функция | Предназначение |
|---|---|
compile(string $css, array $options = []): array |
Анализира и компилира CSS. Връща build (с натрупване) и замиканията buildExact, които приемат кандидати и незадължителен флаг $minify, както и sources, root, features и designSystem. Приема същите опции като tw::compile(), с изключение на stateCacheFile |
StateCache\compileCssCached(string $css, string $cacheFile, array $options = []): array |
compile() с постоянния кеш на състоянието на компилатора |
parseCssState(), finalizeCssState(), compileParsed() |
Двете части на анализа (сериализуемо състояние, след това замиканията, възстановени от него) и последната стъпка по сглобяване, която използва compileCssCached(). parseCss() и compileAst() остават еквивалентите за една стъпка |
use function TailwindPHP\compile;
$compiled = compile('@import "tailwindcss";');
$css = $compiled['build'](['flex', 'p-4'], true); // minified
Кеширане
tw::generate() може да кешира компилирани CSS на диска, така че при идентични входни данни да се пропусне повторната компилация.
| Опция | Тип | По подразбиране | Предназначение |
|---|---|---|---|
cache |
bool | string |
false |
true активира директорията по подразбиране; низ с път задава мястото за кеширане |
cacheTtl |
int |
none | Време на живот на кеша в секунди; изтеклите записи се компилират отново |
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
]);
Ключът на кеша се извежда от съдържанието, конфигурацията на CSS и опцията minify, така че различните входни данни създават различни кеш файлове. Изчистете записите с tw::clearCache() или самостоятелната функция TailwindPHP\clearCache().
За по-подробно ръководство вижте Кеширане и минифициране.