шаг 3 завершен
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
<?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,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user