Files
laravel_school_api_old/app/Support/Release/FeatureFlagRegistry.php
T
2026-05-29 04:33:03 -04:00

41 lines
1.1 KiB
PHP

<?php
namespace App\Support\Release;
final class FeatureFlagRegistry
{
/** @return FeatureFlagDefinition[] */
public function all(): array
{
$flags = config('modular_release.flags', []);
return array_map(
fn (string $key, array $flag): FeatureFlagDefinition => new FeatureFlagDefinition(
key: $key,
owner: (string) ($flag['owner'] ?? 'unowned'),
default: (bool) ($flag['default'] ?? false),
removalTarget: $flag['removal_target'] ?? null,
dimensions: $flag['dimensions'] ?? ['global', 'environment', 'school_id', 'domain_profile']
),
array_keys($flags),
array_values($flags)
);
}
public function find(string $key): ?FeatureFlagDefinition
{
foreach ($this->all() as $flag) {
if ($flag->key === $key) {
return $flag;
}
}
return null;
}
public function export(): array
{
return array_map(fn (FeatureFlagDefinition $flag): array => $flag->toArray(), $this->all());
}
}