*/ private array $flags = []; /** * @param array, rules?:list, targetingKey?:string|null}> $config */ public static function fromArray(array $config): self { $hydrator = new FlagHydrator(); $items = []; foreach ($config as $name => $def) { $items[$name] = $hydrator->hydrate((string)$name, $def); } return new self($items); } /** * @param array $flags */ public function __construct(array $flags = []) { $this->flags = $flags; } public function get(string $name): ?Flag { return $this->flags[$name] ?? null; } /** * @return iterable */ public function all(): iterable { return $this->flags; } }