/** * @test */ public function mergeSeveralBagsIntoOne() { $attributes1 = array('someName1' => 'someValue1', 'someName2' => 'someValue2'); $attributes2 = array('someName2' => 'anotherValue2', 'someName3' => 'someValue3'); $containers = array(new BagContainer($attributes1), new BagContainer($attributes2)); $container = BagContainer::merge($containers); $expectedAttributes = array_merge($attributes1, $attributes2); $this->assertEquals($expectedAttributes, $container->getAll()); }
public static function merge(array $containers) { $resultContainer = parent::merge($containers); $resultMap = array(); foreach ($containers as $container) { foreach ($container->resultMap as $tag => $bag) { if (!isset($resultMap[$tag])) { $resultMap[$tag] = array(); } $resultMap[$tag][] = $bag; } } foreach ($resultMap as $tag => $bags) { $resultMap[$tag] = BagContainer::merge($bags); } $resultContainer->resultMap = $resultMap; return $resultContainer; }
public static function merge(array $containers) { $internalConstraints = array(); foreach ($containers as $constraint) { $internalConstraints = array_merge($internalConstraints, $constraint->constraints); } $constraint = parent::merge($containers); $constraint->constraints = $internalConstraints; return $constraint; }