API
静的機能全体は1つのクラスにあります: 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";で、theme、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 |
Tailwindディレクティブを含む入力CSS(デフォルト@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
指定されたCSSに紐づく再利用可能なTailwindCompilerを作成します。解析とデザインシステムの構築は一度だけ行われるため、異なるコンテンツ文字列からCSSを多数生成する場合に効率的です。generate()を使うと複数回の呼び出しで1つのスタイルシートに蓄積でき、独立したページごとの出力には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のビットマスクで指定します(@property変数の@layer propertiesデフォルト)および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
単一のユーティリティクラスの生の値を返します。戻り値 ?string — ユーティリティが見つからない場合はnull。
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
単一のユーティリティクラスの解決済みの値を返します。戻り値 ?string — ユーティリティが見つからない場合はnull。
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)。ただし、ユーティリティ名と一致しない限りコンパイル結果には何も生成されません。結果はcss()に渡してください。generate()はclass属性のみを読み取るためです。
tw::cssMap()
public static function cssMap(string $css = '@import "tailwindcss";'): array
CSS宣言からユーティリティクラスへの逆引きマップを作成します。既存のCSSをTailwindクラスに変換する場合に便利です。キーは変数を解決した"property: value"文字列で、複数プロパティのユーティリティには"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'
このマップが対象とするのは、よく使われるユーティリティの固定リスト(display、position、flexbox、typography、spacingとsizeの各段階、border、黒・白・透明の色など)であり、すべてのユーティリティやthemeカラーではありません。$css引数は各ユーティリティの解決後の値を変更しますが、--color-brandなどのカスタムthemeトークンは項目に追加されません。
tw::minify()
public static function minify(string $css): string
任意のCSS文字列をミニファイします。コメントを削除し、空白をまとめ、16進カラーを短縮し(#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
theme内のすべてのカラー値を返します。戻り値 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
theme内のすべてのブレークポイント値を返します。戻り値 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
themeのカスタムspacing値を返します。戻り値 array<string, string>(spacing名 → 値)。
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)は3種類の入力形式を受け付けます:
| 形式 | 例 |
|---|---|
| 文字列のみ | 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に紐づく、静的クラスと同じ検査機能を備えています。呼び出しのたびにthemeを再解析せずに済みます。
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()は蓄積型です。呼び出すたびに候補がコンパイラーの集合に追加され、返されるスタイルシートにはそれまでに確認したすべての内容が含まれます。テンプレートをまたいで1つのスタイルシートを構築する場合に適しています。
generateExact()とcssExact()は各呼び出しで指定されたコンテンツまたは候補のみを厳密にコンパイルし、前の呼び出しの内容は引き継ぎません。一方、解析済みのデザインシステムは再利用します。出力は同じコンテンツを新規にtw::generate()した場合と一致します。長期間使う1つのコンパイラーから、ページごとのCSSを構築する方法として最速です:
use TailwindPHP\tw;
$compiler = tw::compile($themeCss);
foreach ($pages as $slug => $html) {
$perPageCss[$slug] = $compiler->generateExact($html, true);
}
4つのメソッドはいずれも省略可能な$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(蓄積型)と、候補と省略可能な$minifyフラグを受け取るbuildExactクロージャーに加え、sources、root、features、designSystemを返します。tw::compile()と同じオプションを受け付けますが、stateCacheFileは除きます |
StateCache\compileCssCached(string $css, string $cacheFile, array $options = []): array |
永続的なコンパイラー状態キャッシュを使ってcompile()します |
parseCssState()、finalizeCssState()、compileParsed() |
解析の2段階(シリアライズ可能な状態の作成と、その状態から再構築するクロージャー)およびcompileCssCached()が使う最終組み立て処理です。parseCss()とcompileAst()は、引き続き1段階で実行できる同等の関数です |
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 |
なし | キャッシュの有効期間(秒)。期限切れの項目は再コンパイルされます |
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設定、ミニファイオプションから導出されるため、入力ごとに異なるキャッシュファイルが作られます。tw::clearCache()または単独のTailwindPHP\clearCache()関数で項目を消去できます。
詳しいガイドはキャッシュとミニファイを参照してください。