<?php

declare(strict_types=1);

namespace App\Framework\Core;

/**
 * Stellt Versionsinformationen für das Framework bereit.
 */
final readonly class VersionInfo
{
    /**
     * Die aktuelle Version des Frameworks.
     */
    private const string VERSION = '1.0.0';

    /**
     * Gibt die aktuelle Version des Frameworks zurück.
     */
    public function getVersion(): string
    {
        return self::VERSION;
    }

    /**
     * Prüft, ob die aktuelle Version mindestens der angegebenen Version entspricht.
     */
    public function isAtLeast(string $version): bool
    {
        return version_compare(self::VERSION, $version, '>=');
    }

    /**
     * Prüft, ob die aktuelle Version höher als die angegebene Version ist.
     */
    public function isHigherThan(string $version): bool
    {
        return version_compare(self::VERSION, $version, '>');
    }

    /**
     * Gibt Informationen über die Umgebung zurück.
     *
     * @return array{framework: string, php: string, os: string}
     */
    public function getEnvironmentInfo(): array
    {
        return [
            'framework' => self::VERSION,
            'php' => PHP_VERSION,
            'os' => PHP_OS,
        ];
    }
}
