lithium\template\view\Compiler::template()

public static method

Compiles a template and writes it to a cache file, which is used for inclusion.

Parameters

  • string $file

    The full path to the template that will be compiled.

  • array $options

    Options 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. path is not writable), that the compiled template should still be returned and no exception be thrown.

Returns

string

The compiled template.

Source

	public static function template($file, array $options = []) {
		$cachePath = Libraries::get(true, 'resources') . '/tmp/cache/templates';
		$defaults = ['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.");
	}