API
Die gesamte statische Oberfläche liegt in einer Klasse: TailwindPHP\tw (ein Alias der internen Klasse Tailwind). Alle Methoden lassen sich statisch aufrufen. Die Inspektionsmethoden (properties, computedProperties, value, computedValue) akzeptieren die Eingabeformate, die am Ende dieser Seite beschrieben sind.
Wenn du wiederholt mit derselben Konfiguration von CSS arbeitest, rufe tw::compile() einmal auf und verwende die zurückgegebene TailwindCompiler erneut.
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
Parst Inhalte, extrahiert Klassenkandidaten und gibt das generierte CSS zurück. Der Standardwert für $css ist @import "tailwindcss"; und lädt Theme, Preflight und Utilities. Rückgabe 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,
]);
Für die Array-Form werden folgende Schlüssel unterstützt:
| Schlüssel | Typ | Zweck |
|---|---|---|
content |
string |
Zu durchsuchende Inhalte für Klassenkandidaten (erforderlich) |
css |
string |
Eingabe-CSS mit Tailwind-Direktiven (Standard: @import "tailwindcss";) |
minify |
bool |
Ausgabe minimieren (Standard: false) |
importPaths |
string | array | callable | null |
CSS aus dem Dateisystem mit vollständiger @import-Auflösung laden — siehe Imports CSS |
cache |
bool | string |
Datei-Caching aktivieren — siehe Caching |
cacheTtl |
int |
Cache-Lebensdauer in Sekunden |
tw::compile()
public static function compile(string $css = '@import "tailwindcss";', array $options = []): TailwindCompiler
Erstellt einen wiederverwendbaren TailwindCompiler, der an die angegebene CSS gebunden ist. Parsing und Aufbau des Design-Systems erfolgen einmalig. Daher eignet sich diese Variante, wenn CSS für viele verschiedene Inhaltszeichenfolgen erzeugt werden. Verwende generate(), um ein Stylesheet über mehrere Aufrufe hinweg aufzubauen, oder generateExact() für eine separate Ausgabe pro Seite. Rückgabewert 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">');
Das Array $options akzeptiert folgende Einträge:
| Option | Typ | Zweck |
|---|---|---|
stateCacheFile |
string |
Pfad zu einer PHP-Datei, in der der Konstruktionszustand des Compilers über Anfragen und Prozesse hinweg gespeichert wird — siehe Compilerzustand-Cache |
polyfills |
int |
Legt fest, welche Fallbacks ausgegeben werden: eine Bitmaske aus TailwindPHP\POLYFILL_AT_PROPERTY (die @layer properties-Standards für @property-Variablen) und TailwindPHP\POLYFILL_COLOR_MIX (statische Farb-Fallbacks vor color-mix()). Standard: POLYFILL_ALL; POLYFILL_NONE deaktiviert beide |
importSearchPaths |
array<string> |
Zu durchsuchende Verzeichnisse, wenn @import im Dateisystem aufgelöst wird |
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)
Eine vollständige Übersicht aller Instanzmethoden findest du unter TailwindCompiler-Instanzmethoden.
tw::properties()
public static function properties(string|array $input, string $css = '@import "tailwindcss";'): array
Gibt die rohen CSS-Eigenschaften einer Klasse zurück, wobei CSS-Variablen nicht aufgelöst werden. Rückgabewert array<string, string> (Eigenschaftsname → Wert).
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
Wie properties(), aber mit allen CSS-Variablen, die zu konkreten Werten aufgelöst sind. Rückgabewert 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
Gibt den rohen Wert einer einzelnen Utility-Klasse zurück. Rückgabewert ?string — null, wenn die Utility nicht gefunden wird.
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
Gibt den aufgelösten Wert einer einzelnen Utility-Klasse zurück. Rückgabewert ?string — null, wenn die Utility nicht gefunden wird.
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
Extrahiert Tailwind-Klassennamen aus Inhalten (liest sowohl class- als auch className-Attribute). Rückgabewert 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
Extrahiert Klassenkandidaten aus allen Zeichenfolgen im Quellcode, die in einfache oder doppelte Anführungszeichen gesetzt sind. Das eignet sich für Templates, die Klassenlisten in Variablen statt in class-Attributen bilden. Jede Zeichenfolge wird an Leerzeichen getrennt; alle Tokens, die wie Klassennamen aussehen, bleiben erhalten. Rückgabewert 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);
Auch einfache Wörter bestehen die Prüfung (oben hello, world); sie werden zu nichts kompiliert, sofern es sich nicht um Utility-Namen handelt. Übergib das Ergebnis an css(), da generate() nur class-Attribute ausliest.
tw::cssMap()
public static function cssMap(string $css = '@import "tailwindcss";'): array
Erstellt eine umgekehrte Zuordnung von CSS-Deklarationen zu Utility-Klassen, um vorhandenes CSS in Tailwind-Klassen umzuwandeln. Schlüssel sind "property: value"-Zeichenfolgen mit aufgelösten Variablen (Utilities mit mehreren Eigenschaften erhalten zusätzlich einen "prop: value; prop: value"-Schlüssel); Werte sind Klassennamen. Rückgabewert 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'
Die Zuordnung umfasst eine feste Liste gängiger Utilities (Display, Position, Flexbox, Typografie, Abstände und Größenstufen, Rahmen, Schwarz, Weiß, transparente Farben und Ähnliches), aber nicht jede Utility und nicht alle Theme-Farben. Das Argument $css verändert die aufgelösten Werte dieser Utilities, fügt jedoch keine Einträge für benutzerdefinierte Theme-Tokens wie --color-brand hinzu.
tw::minify()
public static function minify(string $css): string
Minimiert eine beliebige CSS-Zeichenfolge: entfernt Kommentare, fasst Leerraum zusammen, kürzt Hex-Farben (#ffffff → #fff), entfernt Einheiten bei Nullwerten (0px → 0) und mehr. Rückgabewert string.
Für CSS, die TailwindPHP selbst erzeugt, verwende vorzugsweise die Option minify (tw::generate(['minify' => true])) oder den Parameter $minify der Compiler-Methoden. Dabei wird während der Serialisierung minimiert. Das ist schneller und erhält untergeordnete :not()-Selektoren, die beim zeichenfolgenbasierten Durchlauf zusammengefasst werden.
use TailwindPHP\tw;
$css = tw::generate('<div class="flex p-4">');
$minified = tw::minify($css);
Eine vollständige Übersicht der Optimierungen findest du unter Caching und Minifizierung.
tw::clearCache()
public static function clearCache(string|bool|null $cache = true): int
Löscht zwischengespeicherte CSS-Dateien. Übergib true (oder lass es weg), um das Standard-Cache-Verzeichnis zu verwenden, oder einen Pfad als Zeichenfolge für ein benutzerdefiniertes Verzeichnis. Rückgabewert int — die Anzahl der gelöschten Dateien.
use TailwindPHP\tw;
tw::clearCache(); // default directory
tw::clearCache('/path/to/cache'); // custom directory
Eine eigenständige Funktion TailwindPHP\clearCache() ist ebenfalls verfügbar.
tw::colors()
public static function colors(string $css = '@import "tailwindcss";'): array
Gibt alle Farbwerte des Themes zurück. Rückgabewert array<string, string> (Farbname → berechneter Wert).
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
Gibt alle Breakpoint-Werte des Themes zurück. Rückgabewert array<string, string> (Breakpoint-Name → Wert).
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
Gibt benutzerdefinierte Abstände aus dem Theme zurück. Rückgabewert array<string, string> (Abstandsname → Wert).
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']
Eingabeformate
Die Inspektionsmethoden (generate, properties, computedProperties, value, computedValue) akzeptieren drei Eingabeformen:
| Format | Beispiel |
|---|---|
| Nur Zeichenfolge | tw::generate('<div class="flex">') |
| Zeichenfolge + CSS-Zeichenfolge | tw::generate('<div class="flex">', '@import "tailwindcss"; @theme { ... }') |
Array mit content (+ optionalem 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-Instanzmethoden
Das von tw::compile() zurückgegebene Objekt stellt dieselben Inspektionsmethoden wie die statische Klasse bereit, gebunden an die CSS, mit der es kompiliert wurde. So musst du das Theme nicht bei jedem Aufruf erneut einlesen.
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
Kumulierte und exakte Generierung
generate() und css() kumulieren: Jeder Aufruf fügt seine Kandidaten zur wachsenden Menge des Compilers hinzu; das zurückgegebene Stylesheet umfasst alles, was bisher erfasst wurde. Das eignet sich für ein Stylesheet, das über mehrere Templates hinweg aufgebaut wird.
generateExact() und cssExact() kompilieren bei jedem Aufruf genau die angegebenen Inhalte oder Kandidaten, ohne sie aus vorherigen Aufrufen zu übernehmen. Das bereits eingelesene Design-System des Compilers wird weiterverwendet. Die Ausgabe entspricht der eines neuen tw::generate() mit denselben Inhalten. So erzeugst du am schnellsten seitenbezogenes CSS mit einem langlebigen Compiler:
use TailwindPHP\tw;
$compiler = tw::compile($themeCss);
foreach ($pages as $slug => $html) {
$perPageCss[$slug] = $compiler->generateExact($html, true);
}
Alle vier Methoden akzeptieren ein optionales Flag $minify, das CSS während der Serialisierung minimiert ausgibt. Die Ausgabe ist byteidentisch mit tw::generate(['minify' => true]) und günstiger, als die lesbar formatierte Ausgabe nachträglich zu minimieren.
Erweiterte Inspektoren
Um den kompilierten Zustand direkt zu untersuchen:
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
Diese Methoden geben interne Strukturen zurück. Was darin enthalten ist, erfährst du unter Architektur.
Funktionen auf niedrigerer Ebene
Die Klasse tw kapselt eine Reihe von Funktionen im Namensraum TailwindPHP. Sie sind hilfreich, wenn du statt eines TailwindCompiler das rohe Kompilierungsergebnis brauchst:
| Funktion | Zweck |
|---|---|
compile(string $css, array $options = []): array |
Liest CSS ein und kompiliert es. Gibt build (kumuliert) und buildExact-Closures zurück, die Kandidaten und ein optionales Flag $minify entgegennehmen, außerdem sources, root, features und designSystem. Akzeptiert dieselben Optionen wie tw::compile(), außer stateCacheFile |
StateCache\compileCssCached(string $css, string $cacheFile, array $options = []): array |
compile() mit dem persistenten Compilerzustand-Cache |
parseCssState(), finalizeCssState(), compileParsed() |
Die zwei Schritte des Parsings (zuerst ein serialisierbarer Zustand, dann die daraus neu aufgebauten Closures) und der abschließende Zusammenbau, den compileCssCached() verwendet. parseCss() und compileAst() bieten weiterhin die entsprechenden Funktionen in einem Schritt |
use function TailwindPHP\compile;
$compiled = compile('@import "tailwindcss";');
$css = $compiled['build'](['flex', 'p-4'], true); // minified
Caching
tw::generate() kann kompilierte CSS auf dem Datenträger zwischenspeichern, sodass identische Eingaben nicht erneut kompiliert werden müssen.
| Option | Typ | Standardwert | Zweck |
|---|---|---|---|
cache |
bool | string |
false |
true aktiviert das Standardverzeichnis; bei einem Pfad als Zeichenfolge wird dort zwischengespeichert |
cacheTtl |
int |
keiner | Cache-Lebensdauer in Sekunden; abgelaufene Einträge werden neu kompiliert |
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
]);
Der Cache-Schlüssel wird aus dem Inhalt, der CSS-Konfiguration und der Option minify abgeleitet. Verschiedene Eingaben erzeugen daher verschiedene Cache-Dateien. Lösche Einträge mit tw::clearCache() oder der eigenständigen Funktion TailwindPHP\clearCache().
Die ausführliche Anleitung findest du unter Caching und Minifizierung.