Files
new.rybstock.ru/app/Repositories/SettingRepository.php
T
2026-06-04 00:27:17 +03:00

39 lines
984 B
PHP

<?php
declare(strict_types=1);
namespace App\Repositories;
final class SettingRepository extends BaseRepository
{
/**
* @return array<string, mixed>
*/
public function allKeyed(): array
{
$statement = $this->pdo()->query(
'SELECT setting_key, setting_value, value_type
FROM site_settings
ORDER BY group_name, setting_key'
);
$settings = [];
foreach ($statement->fetchAll() as $row) {
$settings[$row['setting_key']] = $this->castValue($row['setting_value'], $row['value_type']);
}
return $settings;
}
private function castValue(?string $value, string $type): mixed
{
return match ($type) {
'number' => $value === null ? null : (float) $value,
'bool' => $value === '1' || $value === 'true',
'json' => $value === null ? null : json_decode($value, true),
default => $value,
};
}
}