lithium\template\view\Compiler::template()
Compiles a template and writes it to a cache file, which is used for inclusion.
Parameters
-
string
$fileThe full path to the template that will be compiled.
-
array
$optionsOptions for compilation include:
path: Path where the compiled template should be written.fallback: Boolean indicating that if the compilation failed for some reason (e.g.pathis not writable), that the compiled template should still be returned and no exception be thrown.
Returns
stringThe compiled template.
Source
public static function template($file, array $options = array()) {
$cachePath = Libraries::get(true, 'resources') . '/tmp/cache/templates';
$defaults = array('path' => $cachePath, 'fallback' => false);
$options += $defaults;
$stats = stat($file);
$oname = basename(dirname($file)) . '_' . basename($file, '.php');
$oname .= '_' . ($stats['ino'] ?: hash('md5', $file));
$template = "template_{$oname}_{$stats['mtime']}_{$stats['size']}.php";
$template = "{$options['path']}/{$template}";
if (file_exists($template)) {
return $template;
}
$compiled = static::compile(file_get_contents($file));
if (is_writable($cachePath) && file_put_contents($template, $compiled) !== false) {
foreach (glob("{$options['path']}/template_{$oname}_*.php", GLOB_NOSORT) as $expired) {
if ($expired !== $template) {
unlink($expired);
}
}
return $template;
}
if ($options['fallback']) {
return $file;
}
throw new TemplateException("Could not write compiled template `{$template}` to cache.");
}