/** * Convert array to collection reference * * @param array $array * @return CollectionReference * @throws ReferenceNotImplementsException * @throws \InvalidArgumentException */ public static function convertArrayToCollection(array $array) { $collection = new CollectionReference(); foreach ($array as $key => $value) { if ($value instanceof CollectionItem) { $collection->addItem($value); } else { // Add item to collection $collection->addItem(new CollectionItem(self::convertValueToReference($key), self::convertValueToReference($value))); } } return $collection; }
public function testMergeWithArray() { $collection1 = new CollectionReference(); $collection1->addItem(CollectionItem::create('key1', 'value')); $collection1->merge(['key2' => 'value']); static::assertCount(2, $collection1->getCollection()); static::assertInstanceOf(StringReference::class, $collection1->getCollection()[1]->getKey()); }
/** * Resolve collection type * * @param array $data * @return CollectionReference * @throws \samsonframework\container\definition\builder\exception\ReferenceNotImplementsException * @throws ReferenceNotImplementsException * @throws \InvalidArgumentException */ protected function resolveCollection(array $data) : CollectionReference { $collection = new CollectionReference(); if (array_key_exists('item', $data)) { /** @var array $itemCollection */ $itemCollection = array_key_exists('key', $data['item']) && array_key_exists('value', $data['item']) ? [$data['item']] : $data['item']; /** @var array $item */ foreach ($itemCollection as $item) { $collection->addItem(new CollectionItem($this->resolveDependency($item['key']), $this->resolveDependency($item['value']))); } } return $collection; }