Files
MtoRagSystem/src/Config/ContextServiceConfig.php
2026-04-29 20:55:21 +02:00

56 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Config;
/**
* YAML-backed context configuration.
*
* This class intentionally has no PHP fallback values. Missing or invalid
* configuration must be fixed in config/retriex/*.yaml instead of being hidden
* by application defaults.
*/
final class ContextServiceConfig
{
/**
* @param array<string, mixed> $config
*/
public function __construct(private readonly array $config)
{
}
public function getMaxVisibleRegularLines(): int
{
return $this->requiredPositiveInt('max_visible_regular_lines');
}
public function getMaxFullLines(): int
{
return $this->requiredPositiveInt('max_full_lines');
}
private function requiredPositiveInt(string $key): int
{
if (!array_key_exists($key, $this->config)) {
throw new \InvalidArgumentException(sprintf('Missing required RetrieX context config key "%s".', $key));
}
$value = $this->config[$key];
if (is_int($value)) {
$intValue = $value;
} elseif (is_string($value) && preg_match('/^-?\d+$/', trim($value)) === 1) {
$intValue = (int) trim($value);
} else {
throw new \InvalidArgumentException(sprintf('RetrieX context config key "%s" must be an integer.', $key));
}
if ($intValue <= 0) {
throw new \InvalidArgumentException(sprintf('RetrieX context config key "%s" must be greater than 0.', $key));
}
return $intValue;
}
}