QiqテンプレートはネイティブのPHPを使用しますが、{{ ... }}
シンタックスシュガーはコンパイルプロセスが必要です。
コンパイル済みテンプレートがキャッシュディレクトリに既に存在し、ソーステンプレートファイルよりも新しい場合、QiqCompiler は既存のコンパイル済みテンプレートを返します。そうでない場合...
QiqCompiler はソーステンプレートファイルを読み込み、正規表現を使用して {{ ... }}
タグを分割し、QiqToken オブジェクトとして保持します。
次に、QiqCompiler は各 QiqToken を呼び出して {{ ... }}
タグのPHPコード置換を取得し、すべての部分を順番に再構築します。
コンパイル済みテンプレートはコンパイラのキャッシュディレクトリに保存されます。同じソーステンプレートは再度コンパイルされません - 少なくとも、再保存されてタイムスタンプが更新され、コンパイル済みバージョンよりも新しくなるまでは。
QiqCompiler のキャッシュパスは、デフォルトで sys_get_temp_dir()
ディレクトリに /qiq
を追加したものですが、Template::new()
で任意のパスを指定できます:
$template = Template::new(
cachePath: '/path/to/qiqcache/'
);
QiqCompiler は、ソーステンプレートファイルのフルパスを使用してコンパイル済みテンプレートをキャッシュに保存します。例えば、キャッシュパスが /private/tmp
で、ソーステンプレートファイルが /www/site/resources/templates/foo.php
にある場合、コンパイル済みテンプレートファイルは次の場所にキャッシュされます:
/private/tmp/www/site/resources/templates/foo.php
コンパイルエラーが発生した場合、キャッシュパスの一部としてソーステンプレートの完全なパスがあると、元のテンプレートを見つけるのに役立ちます。
キャッシュをクリアするには、Template 内の Compiler を取得し、その clear()
メソッドを呼び出します。
$template->getCompiler()->clear();
Qiq構文を使用せず、テンプレートファイルでPHPのみを使用することが絶対に確実な場合は、$cachePath
を false に設定して Template を作成できます:
$template = Template::new(
cachePath: false
);
これにより、Template はテンプレートファイルを全くコンパイルまたはキャッシュしない NonCompiler を使用するようになります。