props = []; $this->groups = []; return; } $formatted_props = array_map( function( array $overridable_prop ) { return Component_Overridable_Prop::make( $overridable_prop ); }, $overridable_props_meta['props'] ?? [] ); $this->props = $formatted_props; $this->groups = $overridable_props_meta['groups'] ?? []; } public static function make( array $overridable_props_meta ): self { return new self( $overridable_props_meta ); } public function to_associative_array(): array { $props_map = []; foreach ( $this->props as $prop ) { $props_map[ $prop->override_key ] = $prop->to_associative_array(); } return [ 'props' => $props_map, 'groups' => $this->groups, ]; } }