LatteEngine
El motor real: {@see TemplateEngineInterface} implementado sobre Latte. Resuelve plantillas contra un directorio base y, cuando hay uno de layouts compartidos, contra los dos — para que la vista de un plugin pueda extender un layout del host sin que el host tenga que copiarlo a su lado. Ver {@see MultiDirFileLoader}.
LatteEngine::__construct()
public function __construct(string $viewPath, string $cacheDir, string $sharedViewsDir = ''):Parameters
| Name | Type | Description |
|---|---|---|
| $viewPath | string | Base directory for template resolution (ej: <root>/resources/views/). |
| $cacheDir | string | Latte compiled-template cache directory (ej: <root>/storage/cache). |
| $sharedViewsDir | string | Directorio de layouts compartidos que las vistas de plugin pueden extender (default: $viewPath). Reemplaza el hard-coded rootPath.'/resources/views'. |
LatteEngine::setViewPath()
public function setViewPath(string $path): voidReapunta el directorio base de plantillas ya construido el motor. Existe porque un host descubre dónde viven sus vistas después de arrancar —al cargar plugins, al leer configuración—, no en el constructor. Cambiarlo reinstala el loader: el anterior seguiría resolviendo contra la ruta vieja y fallaría con «template not found» sobre archivos que sí existen, que es de los errores más caros de leer.
Parameters
| Name | Type | Description |
|---|---|---|
| $path | string |
LatteEngine::render()
public function render(string $template, array $params = []): stringRenderiza `$template` con `$params` y devuelve el HTML, sin escribir a la salida. Devolver en vez de imprimir es lo que deja probar el resultado y componerlo dentro de otra respuesta; un motor que hace `echo` obliga a capturar buffers a todo el que lo use.
Parameters
| Name | Type | Description |
|---|---|---|
| $template | string | |
| $params | array<string, mixed> |