TailwindPHP
Un portage de TailwindCSS 4.x vers PHP. Générez des Tailwind utilitaires CSS en PHP, sans Node.js ni étape de compilation. Inclut cn(), tailwind-merge, CVA, les extensions de typographie et de formulaires, ainsi qu’un CLI.
composer require tailwindphp/tailwindphpDernière 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'En pratique
Transmettez le balisage et, facultativement, le CSS d’entrée à un seul appel PHP pour obtenir une feuille de style.
Générer CSS à partir de PHP
tw::generate() analyse le balisage pour repérer les noms de classes et ne renvoie que les CSS nécessaires à ces classes. Le deuxième argument accepte le CSS d’entrée : une couleur définie dans @theme devient ainsi un utilitaire.
cn() construit des chaînes de classes et résout les conflits Tailwind : le dernier utilitaire en conflit l’emporte.
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'PHP pur
Sans Node.js ni étape de compilation. Fonctionne avec PHP 8.2+ et les extensions mbstring et ctype standard. Exécutez composer require et c’est parti.
Suit TailwindCSS v4.3.3
Un portage de Tailwind v4.3.3 avec les mêmes utilitaires, variantes et directives. Les différences connues avec Tailwind sont documentées.
Plus de 4 400 tests
La sortie est vérifiée à l’aide des propres suites de tests de TailwindCSS, extraites de son code source TypeScript et réexécutées à chaque push.
Tous les utilitaires et variantes
L’ensemble complet d’utilitaires et toutes les variantes : survol, focus, adaptation à la taille d’écran, mode sombre, requêtes de conteneur et valeurs arbitraires.
Directives CSS
@import, @theme, @apply, @utility, @custom-variant, @layer, @plugin et @source, analysées et résolues en PHP.
Génération à l’exécution
Générez des CSS utilitaires à la volée depuis HTML, le contenu d’une base de données ou des variables de modèle. Aucune étape de compilation n’est nécessaire.
Tout inclus
cn(), merge(), join() et variants() : clsx, tailwind-merge et le portage de CVA vers PHP, sans paquet supplémentaire.
Plugins
@tailwindcss/typography et @tailwindcss/forms portés vers PHP, ainsi qu’une extension PHP API pour créer vos propres utilitaires et composants.
CLI
bin/tailwindphp génère une feuille de style à partir d’un fichier CSS d’entrée avec -i, -o, --watch et --minify.
Inspecter le thème
Lisez directement depuis PHP les valeurs brutes et calculées des propriétés, les couleurs, les points de rupture et les espacements de n’importe quelle classe.
Cache et minificateur
Un minificateur CSS intégré et un cache de fichiers avec TTL accélèrent les compilations répétées et allègent la sortie.
Frameworks WordPress et PHP
Déployez des thèmes et extensions basés sur Tailwind sans Node.js dans la pile. TailwindPHP est une dépendance Composer unique.
Pourquoi TailwindPHP
Un seul environnement d’exécution en production
Un projet PHP qui adopte Tailwind intègre généralement aussi Node.js, une installation de npm et une étape de compilation dans CI et Docker. TailwindPHP compile plutôt le CSS au sein du processus PHP.
CSS pour le contenu connu à l’exécution
Le balisage provenant d’une base de données, d’une saisie utilisateur ou d’une variable de modèle peut être transmis directement à tw::generate(), qui ne renvoie que les CSS nécessaires à ses classes.
Vérifié par rapport à une version figée de Tailwind
Les cas de test sont extraits du code source de Tailwind figé dans le dépôt et exécutés sur la sortie de PHP ; tout écart fait échouer CI. La version 1.7.0 a été vérifiée par rapport à Tailwind v4.3.3 avec 4,427 tests.
CSS par page depuis un seul compilateur
Compilez le thème une fois avec tw::compile(), puis appelez generateExact() pour chaque page. Chaque appel renvoie ce qu’un tw::generate() à froid de cette page produirait, sans analyser à nouveau le thème.
Comparaison avec
Tailwind Labs fournit ses propres méthodes pour générer Tailwind CSS. Voici ce qui différencie TailwindPHP.
| Outil | Idéal pour | Différence avec TailwindPHP |
|---|---|---|
| Tailwind CLI (@tailwindcss/cli) | Idéal pourL’outil en ligne de commande de Tailwind, installé depuis npm. Il analyse vos fichiers HTML, composants et modèles pour repérer les noms de classes, puis écrit les styles correspondants dans un fichier CSS statique. | Différence avec TailwindPHPTailwindPHP compile dans PHP sans installation de Node.js ni de npm. Il suit une version fixe Tailwind (v4.3.3 dans 1.7.0) ; son propre benchmark montre que l’original TypeScript est plus rapide pour les opérations de bas niveau. |
| Tailwind autonome CLI | Idéal pourLe Tailwind CLI en tant qu’exécutable autonome, pour les projets qui souhaitent l’utiliser sans installer Node.js. | Différence avec TailwindPHPL’exécutable est un binaire distinct qui s’exécute comme étape de compilation. TailwindPHP est un paquet Composer appelé par votre code PHP ; il peut donc aussi générer CSS à la demande à partir du contenu d’une base de données ou de variables de modèle. |
| Tailwind Play CDN | Idéal pourUne balise de script qui exécute Tailwind dans le navigateur, pour l’essayer sans étape de compilation. La documentation de Tailwind indique qu’il est conçu pour le développement et n’est pas destiné à la production. | Différence avec TailwindPHPTailwindPHP ne nécessite pas non plus d’étape de compilation, mais génère CSS sur le serveur, en PHP, et le renvoie sous forme de chaîne, par exemple pour l’écrire dans une feuille de style. |
Questions et réponses
Réponses courtes issues de la documentation de TailwindPHP.
La version 1.7.0 suit Tailwind CSS v4.3.3. Ses suites de tests ont été extraites à nouveau pour cette version.
La sortie est testée par rapport à des cas extraits des propres fichiers de test de Tailwind. Le journal des modifications de 1.7.0 signale quelques différences de sérialisation ; par exemple, .p-0 conserve padding: 0px, alors que le CLI de référence émet padding: 0.
Non. Les extensions sont PHP : celles de typographie et de formulaires sont portées, et vous pouvez créer les vôtres avec l’PHP API d’extension, puis les enregistrer avec registerPlugin(). Un nom @plugin non enregistré déclenche une erreur.
Dans le benchmark du projet sur PHP 8.4.5 et un Apple M1, la génération d’une page complète prenait environ 14 ms. Pour les entrées répétées, le cache de fichiers évite la compilation et un compilateur à longue durée de vie avec generateExact() réutilise le thème analysé.
Non. IntelliSense, la saisie semi-automatique, le tri des classes et les cartes source sont volontairement exclus. TailwindPHP génère uniquement CSS.
PHP 8.2 ou ultérieur, avec les extensions ctype et mbstring. composer.json déclare la version PHP, et CI exécute la suite de tests sur PHP 8.2, 8.3 et 8.4.
Installez le paquet avec Composer et suivez le guide de démarrage pour générer votre première feuille de style à partir de PHP.