====== ThemeRenderer ====== **Layer:** ''Core'' · **Source:** ''lib/core/ThemeRenderer.php:31'' (lines 31–235) ---- class ThemeRenderer implements ThemeRendererInterface Default theme renderer implementation. Resolves the active theme directory from a given name, falls back to a configured fallback theme when the primary theme is missing, and renders header / content / footer templates via include statements. Usage: \ // Constructor injection (preferred) $renderer = new ThemeRenderer('/var/www/public/themes/', 'my-theme'); // Global-context factory (legacy bootstrap) $renderer = ThemeRenderer::fromGlobalContext(); // Full-page render $renderer->render('single', 200); // 404 response $renderer->render404(); \ ======= Inheritance ======= ^ Relation ^ Type ^ Meaning ^ | implements | [[scriptlog:lib:core:themerendererinterface|''ThemeRendererInterface'']] | contract | ======= Constants (5) ======= ^ Visibility ^ Name ^ Value ^ Line ^ | ''private'' | ''HEADER_TEMPLATE'' | '''header.php';'' | 36 | | ''private'' | ''FOOTER_TEMPLATE'' | '''footer.php';'' | 41 | | ''private'' | ''NOT_FOUND_TEMPLATE'' | '''404.php';'' | 46 | | ''private'' | ''TEMPLATE_EXTENSION'' | '''.php';'' | 51 | | ''private'' | ''FALLBACK_THEME'' | '''blog';'' | 56 | ======= Properties (2) ======= ^ Visibility ^ Type ^ Name ^ Default ^ Line ^ | ''private'' | ''string'' | ''$themeDir'' | | 66 | | ''private'' | ''(untyped)'' | ''$errorLogger'' | | 75 | ======= Methods (9) ======= ^ Visibility ^ Method ^ Summary ^ Line ^ | public | ''__construct()'' | Construct a new ThemeRenderer. | 89 | | public static | ''fromGlobalContext()'' | Factory method that constructs a ThemeRenderer from global application context. | 117 | | public | ''render()'' | Render a full page: header, content template, and footer. | 135 | | public | ''renderHeader()'' | Include the current theme's header template. | 146 | | public | ''renderContent()'' | Include a content template from the current theme directory. | 162 | | public | ''renderFooter()'' | Include the current theme's footer template. | 183 | | public | ''render404()'' | Render a 404 response. | 199 | | public | ''getThemeDir()'' | Return the resolved absolute path to the active theme directory. | 219 | | private | ''log()'' | Log a message via the configured error logger, if one is set. | 229 | ======== __construct() ======== public function __construct(string $themesRootPath, string $themeName, ?callable $errorLogger = null, string $fallbackTheme = 'blog') //lines 89–106 (18)// Construct a new ThemeRenderer. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$themesRootPath'' | ''string'' | //required// | Absolute path to the parent directory containing all theme directories, e.g. "/var/www/public/themes/". | | ''$themeName'' | ''string'' | //required// | Name of the active theme directory (sanitized with {@see basename()}). | | ''$errorLogger'' | ''?callable'' | ''null'' | Optional error logger. | | ''$fallbackTheme'' | ''string'' | '''blog''' | Fallback theme name when the primary theme is missing required templates. | ======== fromGlobalContext() ======== public static function fromGlobalContext(): self //lines 117–130 (14)// Factory method that constructs a ThemeRenderer from global application context. Uses {@see theme_identifier()} to determine the active theme and the {@see APP_ROOT} / {@see APP_THEME} constants for the root path. The default error logger is {@see scriptlog_error()}. //Takes no parameters.// **Returns:** ''self'' — self ======== render() ======== public function render(string $template, int $statusCode = 200): void //lines 135–141 (7)// Documentation inherited from [[scriptlog:lib:core:themerendererinterface|''Scriptlog\Core\ThemeRendererInterface'']]. Render a full page: header, content template, and footer. Sets the HTTP response code before any output is sent. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$template'' | ''string'' | //required// | Content template name (without .php extension). | | ''$statusCode'' | ''int'' | ''200'' | HTTP status code (default 200). | **Returns:** ''void'' ======== renderHeader() ======== public function renderHeader(): void //lines 146–157 (12)// Documentation inherited from [[scriptlog:lib:core:themerendererinterface|''Scriptlog\Core\ThemeRendererInterface'']]. Include the current theme's header template. Outputs the opening HTML structure (doctype, head, navigation). Called internally by {@see render()}. //Takes no parameters.// **Returns:** ''void'' ======== renderContent() ======== public function renderContent(string $template): void //lines 162–178 (17)// Documentation inherited from [[scriptlog:lib:core:themerendererinterface|''Scriptlog\Core\ThemeRendererInterface'']]. Include a content template from the current theme directory. The template name is sanitized with {@see basename()} before inclusion to prevent directory traversal attacks. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$template'' | ''string'' | //required// | Content template name (without .php extension). | **Returns:** ''void'' ======== renderFooter() ======== public function renderFooter(): void //lines 183–194 (12)// Documentation inherited from [[scriptlog:lib:core:themerendererinterface|''Scriptlog\Core\ThemeRendererInterface'']]. Include the current theme's footer template. //Takes no parameters.// **Returns:** ''void'' ======== render404() ======== public function render404(): void //lines 199–213 (15)// Documentation inherited from [[scriptlog:lib:core:themerendererinterface|''Scriptlog\Core\ThemeRendererInterface'']]. Render a 404 response. Sets a 404 HTTP status code, then renders the header, the 404 content template, and the footer. If the 404 template does not exist a warning is logged and rendering continues silently. //Takes no parameters.// **Returns:** ''void'' ======== getThemeDir() ======== public function getThemeDir(): string //lines 219–222 (4)// Documentation inherited from [[scriptlog:lib:core:themerendererinterface|''Scriptlog\Core\ThemeRendererInterface'']]. Return the resolved absolute path to the active theme directory. The path always ends with a directory separator. //Takes no parameters.// **Returns:** ''string'' — string Absolute path to the theme directory, e.g. "/var/www/public/themes/blog/" ======== log() ======== private function log(string $message): void //lines 229–234 (6)// Log a message via the configured error logger, if one is set. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''string'' | //required// | The log message. | **Returns:** ''void'' ---- //This page is generated from source by 'tools/gendoc'. Edits will be overwritten.//