
# TailwindPHP

TailwindPHP è un **port 1:1 di TailwindCSS 4.x per PHP**. Analizza il vostro CSS, cerca i nomi delle classi nel markup e genera il CSS di utility prodotto da TailwindCSS v4.3.3, interamente in PHP, senza Node.js né passaggi di compilazione.

- **PHP puro**: viene distribuito come pacchetto Composer e funziona su PHP 8.2+ con le estensioni standard `ctype` e `mbstring`. Niente `exec`, FFI o strumenti di compilazione nativa.
- **Verificato con TailwindCSS**: utility, varianti, direttive e funzioni CSS seguono TailwindCSS v4.3.3. L'output è verificato con le suite di test di Tailwind, estratte dal codice sorgente TypeScript e rieseguite a ogni push (oltre 4,400 test). Le differenze note (alcuni dettagli di serializzazione senza effetti sulla cascata, oltre a problemi ancora aperti) sono elencate in [Compatibilità e aggiornamento](https://tailwindphp.inline0.dev/it/docs/advanced/compatibility).
- **L'intero set di funzionalità**: tutto il set di utility TailwindCSS v4.3.3 (inclusi `container`, le utility per le barre di scorrimento, `zoom-*` e `tab-*`), tutte le varianti (hover, focus, responsive, modalità scura, query dei contenitori e valori arbitrari) e tutte le direttive: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` e `@source`.
- **Tutto incluso**: `cn()`, `merge()`, `join()` e `variants()` includono port PHP di clsx, tailwind-merge e CVA, così le librerie complementari usate in ogni progetto Tailwind sono già disponibili.
- **Plugin**: `@tailwindcss/typography` e `@tailwindcss/forms` sono portati integralmente, e il plugin PHP API vi permette di crearne di vostri.

## Perché esiste TailwindPHP

TailwindCSS è scritto in TypeScript ed è eseguito su Node.js. È un requisito imprescindibile per qualsiasi progetto PHP che voglia usare Tailwind: un secondo runtime, un'installazione npm e un passaggio di compilazione nella CI e in Docker. Per molte applicazioni PHP, è un vincolo che si preferirebbe evitare.

TailwindPHP lo elimina. Il vostro codice PHP viene compilato direttamente in Tailwind CSS usando solo la libreria standard. Questo consente di realizzare alcune cose difficili o impossibili con la toolchain JavaScript:

- **Framework WordPress e PHP**: distribuite temi e plugin basati su Tailwind senza chiedere agli utenti di installare Node.js o avviare una compilazione. Vi basta `composer require` e il gioco è fatto. Consultate [TailwindWP](https://github.com/dnnsjsk/tailwindwp), un plugin di esempio WordPress che genera CSS per l'editor a blocchi con TailwindPHP.
- **CSS in fase di esecuzione**: generate CSS di utility al volo a partire da input utente, contenuti del database o variabili del template, invece che in fase di compilazione.
- **Distribuzione più semplice**: niente Node.js in produzione, passaggi di compilazione nella CI o npm nell'immagine Docker.

È la stessa idea che [scssphp](https://github.com/scssphp/scssphp) ha portato in SCSS: il compilatore completo, in PHP.

## Cosa fa

- Compila il set di utility TailwindCSS v4.3.3, le varianti e i valori arbitrari a partire dai nomi delle classi trovati nei tuoi contenuti.
- Risolve l'intera gamma di direttive: `@import` (inclusi moduli virtuali come `tailwindcss` e `tailwindcss/utilities`, e importazioni `reference`), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` e `@source`.
- Implementa le funzioni CSS di Tailwind — `theme()`, `--theme()`, `--spacing()` e `--alpha()` — oltre alla conversione da `color-mix()` a `oklab()` e alle trasformazioni CSS delegate da TailwindCSS a LightningCSS.
- Risolve `@import` dal filesystem con importazioni annidate, deduplicazione e resolver personalizzati, oppure da stringhe CSS inline.
- Include Preflight (il reset di base di Tailwind), il supporto ai prefissi, fallback `@property`, prefissi vendor e accorpamento dei keyframe.
- Include `cn()`, `merge()`, `join()` e `variants()`/`compose()` per costruire nomi di classe, risolvere conflitti e gestire varianti dei componenti.
- Include i plugin per tipografia e moduli, oltre a un API plugin (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) per i plugin personalizzati.
- Fornisce un CLI (`bin/tailwindphp`) con le opzioni di build `@tailwindcss/cli`, oltre alla cache dell'output basata sui file, a una cache persistente dello stato del compilatore e a un minificatore CSS per la produzione.

## Cosa non è

TailwindPHP è un compilatore CSS, non una toolchain per editor. Esclude deliberatamente gli strumenti rivolti all'IDE dell'ecosistema Tailwind — IntelliSense, completamento automatico, ordinamento delle classi e mappe sorgente — perché sono funzionalità dell'editor, non fanno parte della generazione di CSS. Rientra nell'ambito tutto ciò che produce CSS; ne è escluso tutto ciò che alimenta il tuo editor.

## Da dove iniziare

- [Per iniziare](https://tailwindphp.inline0.dev/it/docs/getting-started) — installa il pacchetto e genera il tuo primo foglio di stile.
- [Utilizzo](https://tailwindphp.inline0.dev/it/docs/usage) — analizza i contenuti, personalizza il tema e usa le direttive di Tailwind.
- [Utility di classe](https://tailwindphp.inline0.dev/it/docs/class-utilities) — `cn()`, `merge()`, `join()` e `variants()`.
- [Plugin](https://tailwindphp.inline0.dev/it/docs/plugins) — tipografia, moduli e come crearne uno.
- [API](https://tailwindphp.inline0.dev/it/docs/api) — l'intera gamma `tw` e l'istanza `TailwindCompiler`.
- [CLI](https://tailwindphp.inline0.dev/it/docs/cli) — `bin/tailwindphp` per build basate su file e modalità watch.
- [Avanzate](https://tailwindphp.inline0.dev/it/docs/advanced) — architettura, cache, prestazioni e note sulla compatibilità.
