Core Classes

Complete API reference for all classes in zephyrus-framework/leaf-core.

Leaf\Kernel

Abstract application bootstrap. Extend this in your Application class.

abstract class Kernel
{
    // Override for dependency injection
    protected function createController(string $class): object;

    // Override for custom controller discovery
    protected function registerControllers(Router $router): Router;

    // Public API
    public function run(): void;
    public function buildForStaticGeneration(): array;
    public function getConfig(): Configuration;
    public function getLeafConfig(): LeafConfig;
    public function getRenderEngine(): LatteEngine;
    public function getContentLoader(): ContentLoader;
    public function getTranslationExtension(): ?TranslationLatteExtension;
    public function getTranslator(): ?Translator;
}

Protected properties available in createController():

  • $this->config -- Zephyrus Configuration
  • $this->leafConfig -- LeafConfig
  • $this->renderEngine -- LatteEngine
  • $this->contentLoader -- ContentLoader
  • $this->searchIndexBuilder -- SearchIndexBuilder
  • $this->markdownParser -- MarkdownParser
  • $this->translator -- Translator (nullable)
  • $this->translationExtension -- TranslationLatteExtension (nullable)

Leaf\BuildCommand

Standard build pipeline with hooks.

class BuildCommand
{
    public function __construct(Kernel $app);
    public function addPaths(array $paths): void;
    public function excludePatterns(array $patterns): void;
    public function onPostBuild(callable $callback): void;
    public function run(): int;  // Returns exit code
}

Leaf\StaticSiteBuilder

Renders routes to static HTML files.

class StaticSiteBuilder
{
    public function __construct(Application $app, Router $router);
    public function setOutputDirectory(string $path): void;
    public function setPublicDirectory(string $path): void;
    public function setBaseUrl(string $url): void;
    public function addPath(string $path): void;
    public function addPaths(array $paths): void;
    public function excludePatterns(array $patterns): void;
    public function setAssetExcludes(array $filenames): void;
    public function setLocales(array $locales, string $defaultLocale): void;
    public function setTranslationExtension(TranslationLatteExtension $ext): void;
    public function build(): StaticBuildResult;
}

Leaf\StaticBuildResult

Immutable build result.

final readonly class StaticBuildResult
{
    public int $pagesBuilt;
    public int $totalPaths;
    public float $elapsedMs;
    public array $errors;
    public string $outputDirectory;
    public array $builtPages;

    public function isSuccessful(): bool;
    public function summary(): string;
}

Leaf\Content\ContentLoader

Loads and indexes Markdown content.

class ContentLoader
{
    public function __construct(string $contentDirectory, MarkdownParser $parser, LeafConfig $config);
    public function getPage(string $section, string $slug): ?ParsedMarkdown;
    public function getSidebar(): array;
    public function getAllPages(): array;
    public function getPreviousPage(string $section, string $slug): ?array;
    public function getNextPage(string $section, string $slug): ?array;
    public function getFirstPageUrl(): string;
}

Leaf\Content\MarkdownParser

Markdown to HTML with CommonMark + GFM.

class MarkdownParser
{
    public function __construct();
    public function parse(string $markdown): ParsedMarkdown;
    public function extractFrontMatter(string $markdown): array;
}

Leaf\Content\ParsedMarkdown

Parsed document value object.

final readonly class ParsedMarkdown
{
    public string $html;
    public array $frontMatter;
    public array $toc;  // [{id, text, level}, ...]

    public function meta(string $key, mixed $default = null): mixed;
}

Leaf\Seo\SitemapGenerator

XML sitemap generation.

class SitemapGenerator
{
    public function __construct(string $baseUrl, string $outputDirectory);
    public function generate(array $pages): void;
    public function generateMultiLocale(array $pages, array $locales, string $defaultLocale): void;
}

Leaf\Seo\RobotsGenerator

robots.txt generation.

class RobotsGenerator
{
    public function __construct(string $outputDirectory);
    public function generate(?string $sitemapUrl = null, array $disallow = []): void;
}

Leaf\DevRouter

Development server router.

class DevRouter
{
    public function __construct(string $projectRoot);
    public function handle(): bool;
}

Handles static files, locale prefix stripping, live-reload endpoint (/__dev/reload), and defines the DEV_SERVER constant.


Leaf\Config\LeafConfig

Typed configuration from the leaf: section in config.yml. See Configuration Reference for all fields.


Leaf\Localization\TranslationLatteExtension

Latte extension for multi-locale support.

class TranslationLatteExtension extends Extension
{
    public function __construct(Translator $translator, string $defaultLocale, array $supportedLocales);
    public function getCurrentLocale(): string;
    public function setCurrentLocale(string $locale): void;
}

Registers localize() and i18n() template functions. Injects $currentLocale, $defaultLocale, and $supportedLocales template variables.