Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
4 / 4 |
| HelperMergeTrait | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
2 | |
100.00% |
4 / 4 |
| mergeCollections | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| mergeArray | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| <?php | |
| /** | |
| * This file is part of the Hephaistos project management API. | |
| * | |
| * As each files provides by the CSCFA, this file is licensed | |
| * under the MIT license. | |
| * | |
| * PHP version 5.6 | |
| * | |
| * @category Trait | |
| * @package Hephaistos | |
| * @author matthieu vallance <matthieu.vallance@cscfa.fr> | |
| * @license MIT <https://opensource.org/licenses/MIT> | |
| * @link http://cscfa.fr | |
| */ | |
| namespace CSDT\CollectionsBundle\CollectionHelper\HelperTrait; | |
| use CSDT\CollectionsBundle\CollectionInterfaces\CollectionInterface; | |
| /** | |
| * Helper marge trait | |
| * | |
| * This trait define the logic for the | |
| * helper merging support. | |
| * | |
| * @category Trait | |
| * @package Hephaistos | |
| * @author matthieu vallance <matthieu.vallance@cscfa.fr> | |
| * @license MIT <https://opensource.org/licenses/MIT> | |
| * @link http://cscfa.fr | |
| */ | |
| trait HelperMergeTrait | |
| { | |
| /** | |
| * Merge collection | |
| * | |
| * Return a collection of the same type as | |
| * $collection1 with all the content of the | |
| * second collection. Note a data lost is | |
| * possible by example if you merge a | |
| * ValueCollection as $collection1 and a | |
| * MapCollection as $collection2. | |
| * | |
| * @param CollectionInterface $collection1 The first collection | |
| * @param CollectionInterface $collection2 The second collection | |
| * | |
| * @throws \ParseError if the caster manager is not able to parse the | |
| * array to the first collection | |
| * @return CollectionInterface | |
| */ | |
| public function mergeCollections( | |
| CollectionInterface $collection1, | |
| CollectionInterface $collection2 | |
| ) { | |
| return $this->mergeArray($collection1, $collection2->toArray()); | |
| } | |
| /** | |
| * Merge array | |
| * | |
| * Return a collectino of the same type as | |
| * $collection with the content of the | |
| * array. Note a data lost is possible by | |
| * example if you merge a ValueCollection | |
| * as $collection and an associative array | |
| * as $array. | |
| * | |
| * @param CollectionInterface $collection The collection | |
| * @param array $array The array to merge | |
| * | |
| * @throws \ParseError if the caster manager is not able to parse the | |
| * array to the first collection | |
| * @return CollectionInterface | |
| */ | |
| public function mergeArray( | |
| CollectionInterface $collection, | |
| array $array | |
| ) { | |
| $collectionContent = $collection->toArray(); | |
| $content = array_merge($collectionContent, $array); | |
| return $this->arrayToCollection($content, get_class($collection)); | |
| } | |
| } |