<?php
declare(strict_types=1);

/**
 * Bootstrap fuer die Core-Library.
 *
 * 1) Laedt die strauss-prefixed Vendor-Lib (vendor-prefixed/autoload.php),
 *    falls vorhanden. Bedingung, weil composer install die Autoload-Files
 *    auch lesen will, bevor strauss seine vendor-prefixed/autoload.php
 *    erstmals generiert hat.
 *
 * 2) Backup-Autoloader fuer Smalot\PdfParser.
 *
 * Strauss generiert fuer das Paket ein PSR-0-Mapping, dessen Pfad-Berechnung
 * fehlschlaegt — der prefixed Composer-Loader sucht die Datei in einer
 * falschen Hierarchie. Dieser SPL-Loader zieht die Klasse direkt aus dem
 * vendor-prefixed/smalot/-Verzeichnis und ist auf den prefixed Namespace
 * eingegrenzt, damit keine andere Klassenaufloesung beeinflusst wird.
 */

$prefixedAutoload = __DIR__ . '/vendor-prefixed/autoload.php';
if ( is_file( $prefixedAutoload ) ) {
    require_once $prefixedAutoload;
}

spl_autoload_register( static function ( string $class ): void {
    $prefix = 'Itdatex\\EInvoiceCore\\Vendor\\Smalot\\PdfParser\\';
    if ( strpos( $class, $prefix ) !== 0 ) {
        return;
    }
    $relative = substr( $class, strlen( $prefix ) );
    $path     = __DIR__ . '/vendor-prefixed/smalot/pdfparser/src/Smalot/PdfParser/'
              . str_replace( '\\', '/', $relative ) . '.php';
    if ( file_exists( $path ) ) {
        require $path;
    }
} );
