schema_piece_repository = $schema_piece_repository; $this->schema_piece_aggregator = $schema_piece_aggregator; $this->schema_response_composer = $schema_response_composer; } /** * Handles the Aggregate_Site_Schema_Command. * * @param Aggregate_Site_Schema_Command $command The command. * * @return array The aggregated schema. */ public function handle( Aggregate_Site_Schema_Command $command ): array { $schema_pieces = $this->schema_piece_repository->get( $command->get_page_controls()->get_page(), $command->get_page_controls()->get_page_size(), $command->get_page_controls()->get_post_type(), ); $aggregated_schema_pieces = $this->schema_piece_aggregator->aggregate( $schema_pieces ); return $this->schema_response_composer->compose( $aggregated_schema_pieces ); } }