*/ 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, }; } }