builders = $tmapFactory->create( [ 'array' => $builders, 'type' => BuilderInterface::class ] ); } /** * Builds ENV request * * @param array $buildSubject * @return array */ public function build(array $buildSubject) { $result = []; foreach ($this->builders as $builder) { // @TODO implement exceptions catching $result = $this->merge($result, $builder->build($buildSubject)); } return $result; } /** * Merge function for builders * * @param array $result * @param array $builder * @return array */ protected function merge(array $result, array $builder) { return array_replace_recursive($result, $builder); } }