Beispiel #1
0
 /**
  * Create complexAttributes objects depends on bag content
  * 
  * @return array Array of ComplexAttribute objects
  */
 public function getComplexAttributes(AttributeBag $bag)
 {
     $complexAttributes = array();
     if ($this->complexAttributeFactory !== null) {
         foreach ($bag->getAll() as $id => $parameters) {
             if (!isset($parameters['name'])) {
                 throw new InvalidArgumentException('"name" attribute is required.');
             }
             $name = $parameters['name'];
             unset($parameters['name']);
             $complexAttribute = $this->complexAttributeFactory->create($name, $parameters);
             if (!$complexAttribute->isEmpty()) {
                 $complexAttributes[] = $complexAttribute;
             }
         }
     }
     return $complexAttributes;
 }
 /**
  * @test
  */
 public function mergeBags()
 {
     $bags = array();
     $expected = array();
     for ($i = 0; $i < 10; $i++) {
         $bag = new AttributeBag();
         $attributes = array('someName' . $i => $i, 'anotherSomeName' . $i => $i);
         foreach ($attributes as $name => $value) {
             $bag->add($name, $value);
         }
         $bags[] = $bag;
         $expected = array_merge($attributes, $expected);
     }
     $bag = AttributeBag::merge($bags);
     $this->assertEquals($expected, $bag->getAll());
 }
Beispiel #3
0
 /**
  * Marge couple of BagContainers into one object. 
  * 
  * Result of merging always is BagContainer.
  *
  * @param array $containers
  * @return BagContainer Result of merging
  */
 public static function merge(array $containers)
 {
     $attributeBags = array();
     $weight = 0;
     foreach ($containers as $container) {
         $weight = max($weight, $container->getWeight());
         $attributeBags[] = $container->getAttributeBag();
     }
     $container = new static();
     $container->attributeBag = AttributeBag::merge($attributeBags);
     $container->weight = $weight;
     return $container;
 }