TailwindPHP
Eine Portierung von TailwindCSS 4.x nach PHP. Erzeuge Tailwind-Hilfsklassen CSS in PHP, ganz ohne Node.js und ohne Build-Schritt. Mitgeliefert werden cn(), tailwind-merge, CVA, die Typografie- und Forms-Plugins sowie ein CLI.
composer require tailwindphp/tailwindphpNeueste Version v1.7.0 MIT PHP 8.2+
use function TailwindPHP\merge;
merge('px-2 py-1 bg-red-500', 'px-4 bg-blue-500');
// => 'py-1 px-4 bg-blue-500'
// Conflict resolution is variant-aware
merge('hover:bg-red-500', 'hover:bg-blue-500');
// => 'hover:bg-blue-500'In der Praxis
Übergib Markup und optional eine Eingabe-CSS an einen PHP-Aufruf und erhalte ein Stylesheet zurück.
CSS aus PHP generieren
tw::generate() durchsucht das Markup nach Klassennamen und gibt nur die CSS zurück, die diese Klassen benötigen. Das zweite Argument nimmt Eingabe-CSS entgegen. So wird eine in @theme definierte Farbe zu einer Hilfsklasse.
cn() erstellt Klassenzeichenfolgen und löst Tailwind-Konflikte auf, sodass die zuletzt angegebene, widersprüchliche Hilfsklasse Vorrang hat.
use TailwindPHP\tw;
$css = tw::generate(
'<div class="bg-brand p-4">Hello</div>',
'@import "tailwindcss"; @theme { --color-brand: #3b82f6; }'
);
// .bg-brand now resolves to var(--color-brand)use function TailwindPHP\cn;
cn('px-2 py-1', 'px-4'); // 'py-1 px-4'
cn('btn', ['btn-primary' => true]); // 'btn btn-primary'Reines PHP
Kein Node.js und kein Build-Schritt. Läuft mit PHP 8.2+ und den Standard-Erweiterungen mbstring und ctype. Mit composer require installieren und loslegen.
Folgt TailwindCSS v4.3.3
Eine Portierung von Tailwind v4.3.3 mit denselben Hilfsklassen, Varianten und Direktiven. Die bekannten Unterschiede zu Tailwind sind dokumentiert.
Über 4.400 Tests
Die Ausgabe wird anhand der eigenen Testsuiten von TailwindCSS geprüft. Diese wurden aus dem Quellcode von TypeScript extrahiert und werden bei jedem Push erneut ausgeführt.
Alle Hilfsklassen und Varianten
Der vollständige Satz an Hilfsklassen und alle Varianten: hover, focus, responsives Design, Dark Mode, Container-Abfragen und beliebige Werte.
CSS-Direktiven
@import, @theme, @apply, @utility, @custom-variant, @layer, @plugin und @source werden in PHP geparst und aufgelöst.
Generierung zur Laufzeit
Erzeuge Hilfsklassen CSS spontan aus HTML, Datenbankinhalten oder Template-Variablen. Ein Build-Schritt ist nicht erforderlich.
Alles dabei
cn(), merge(), join() und variants(): clsx, tailwind-merge und CVA, nach PHP portiert, ohne zusätzliche Pakete.
Plugins
@tailwindcss/typography und @tailwindcss/forms nach PHP portiert, dazu ein PHP-Plugin API für deine eigenen Hilfsklassen und Komponenten.
CLI
bin/tailwindphp erstellt mit -i, -o, --watch und --minify ein Stylesheet aus einer Eingabe-CSS-Datei.
Theme untersuchen
Lies rohe und berechnete Eigenschaftswerte, Farben, Breakpoints und Abstände für jede Klasse direkt aus PHP aus.
Cache und Minifizierer
Ein integrierter CSS-Minifizierer und ein Datei-Cache mit TTL beschleunigen wiederholte Builds und halten die Ausgabe schlank.
Frameworks für WordPress und PHP
Veröffentliche Tailwind-basierte Themes und Plugins ohne Node.js im Stack. TailwindPHP ist eine einzelne Composer-Abhängigkeit.
Warum TailwindPHP
Eine Laufzeitumgebung in Produktion
Ein PHP-Projekt, das Tailwind einsetzt, bringt meist auch Node.js, eine npm-Installation und einen Build-Schritt in CI und Docker mit sich. TailwindPHP kompiliert CSS stattdessen direkt im PHP-Prozess.
CSS für Inhalte, die erst zur Laufzeit bekannt sind
Markup aus einer Datenbank, Benutzereingaben oder einer Template-Variablen kannst du direkt an tw::generate() übergeben. Es gibt nur die CSS zurück, die die enthaltenen Klassen benötigen.
Anhand einer festgelegten Tailwind-Version geprüft
Testfälle werden aus dem im Repository festgelegten Tailwind-Quellcode extrahiert und mit der Ausgabe von PHP abgeglichen. Abweichungen lassen CI fehlschlagen. Release 1.7.0 wurde mit 4.427 Tests gegen Tailwind v4.3.3 geprüft.
Seitenspezifisches CSS aus einem Compiler
Kompiliere das Theme einmal mit tw::compile() und rufe dann für jede Seite generateExact() auf. Jeder Aufruf gibt zurück, was eine kalte tw::generate() dieser Seite erzeugen würde, ohne das Theme erneut zu parsen.
Im Vergleich zu
Tailwind Labs bietet eigene Möglichkeiten, Tailwind CSS zu erstellen. Hier erfährst du, worin sich TailwindPHP unterscheidet.
| Werkzeug | Gut geeignet für | Unterschiede zu TailwindPHP |
|---|---|---|
| Tailwind CLI (@tailwindcss/cli) | Gut geeignet fürTailwinds eigenes Kommandozeilen-Tool, installiert über npm. Es durchsucht deine HTML-Dateien, Komponenten und Templates nach Klassennamen und schreibt die passenden Styles in eine statische CSS-Datei. | Unterschiede zu TailwindPHPTailwindPHP kompiliert in PHP ohne Installation von Node.js oder npm. Es folgt einer festgelegten Tailwind-Version (v4.3.3 in 1.7.0). Der eigene Benchmark zeigt, dass das ursprüngliche TypeScript die Low-Level-Operationen schneller ausführt. |
| Eigenständiges CLI von Tailwind | Gut geeignet fürTailwind CLI als eigenständige ausführbare Datei für Projekte, die es ohne Installation von Node.js nutzen möchten. | Unterschiede zu TailwindPHPDie ausführbare Datei ist ein separates Binärprogramm, das als Build-Schritt läuft. TailwindPHP ist ein Composer-Paket, das dein PHP-Code aufruft. Dadurch kann es CSS auch bei einer Anfrage aus Datenbankinhalten oder Template-Variablen generieren. |
| Tailwind Play CDN | Gut geeignet fürEin Script-Tag, das Tailwind im Browser ausführt, um es ohne Build-Schritt auszuprobieren. Laut Tailwind-Doku ist es für die Entwicklung gedacht und nicht für den Produktionseinsatz vorgesehen. | Unterschiede zu TailwindPHPAuch TailwindPHP benötigt keinen Build-Schritt, generiert aber CSS in PHP auf dem Server und gibt es als Zeichenfolge zurück, zum Beispiel zum Schreiben in ein Stylesheet. |
Quellen, ausgewählt
Fragen und Antworten
Kurze Antworten aus der TailwindPHP-Dokumentation.
Release 1.7.0 folgt Tailwind CSS v4.3.3. Die Testsuiten wurden für diese Version erneut extrahiert.
Die Ausgabe wird anhand von Testfällen geprüft, die aus Tailwinds eigenen Testdateien extrahiert wurden. Im Changelog von 1.7.0 sind einige Unterschiede bei der Serialisierung vermerkt. Zum Beispiel behält .p-0 den Wert padding: 0px bei, während das Referenz-CLI padding: 0 ausgibt.
Nein. Plugins sind PHP: Die Typografie- und Forms-Plugins sind portiert, und du kannst eigene mit dem PHP-Plugin API schreiben und sie mit registerPlugin() registrieren. Ein nicht registrierter @plugin-Name löst einen Fehler aus.
Im Projekt-Benchmark mit PHP 8.4.5 und einem Apple M1 dauerte die Generierung einer vollständigen Seite ungefähr 14 ms. Bei wiederholten Eingaben überspringt der Datei-Cache die Kompilierung. Ein langlebiger Compiler mit generateExact() verwendet das geparste Theme erneut.
Nein. IntelliSense, Autovervollständigung, Sortierung von Klassen und Source Maps sind bewusst nicht enthalten. TailwindPHP generiert nur CSS.
PHP 8.2 oder neuer mit den Erweiterungen ctype und mbstring. composer.json legt die PHP-Version fest. CI führt die Testsuite mit PHP 8.2, 8.3 und 8.4 aus.
Installiere das Paket mit Composer und folge der Anleitung für den Einstieg, um dein erstes Stylesheet aus PHP zu generieren.