Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
12 / 12 |
| MapCollectionCaster | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
3 | |
100.00% |
12 / 12 |
| toCollection | |
100.00% |
1 / 1 |
2 | |
100.00% |
8 / 8 |
|||
| support | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| <?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 Caster | |
| * @package Hephaistos | |
| * @author matthieu vallance <matthieu.vallance@cscfa.fr> | |
| * @license MIT <https://opensource.org/licenses/MIT> | |
| * @link http://cscfa.fr | |
| */ | |
| namespace CSDT\CollectionsBundle\CollectionHelper\Caster; | |
| use CSDT\CollectionsBundle\CollectionHelper\HelperInterface\ArrayCasterInterface; | |
| use CSDT\CollectionsBundle\CollectionInterfaces\MapCollectionInterface; | |
| /** | |
| * Map collection caster | |
| * | |
| * This class is used to cast array to MapCollection type. | |
| * | |
| * @category Caster | |
| * @package Hephaistos | |
| * @author matthieu vallance <matthieu.vallance@cscfa.fr> | |
| * @license MIT <https://opensource.org/licenses/MIT> | |
| * @link http://cscfa.fr | |
| */ | |
| class MapCollectionCaster implements ArrayCasterInterface | |
| { | |
| /** | |
| * To collection | |
| * | |
| * This method cast an array into | |
| * a specific collection. | |
| * | |
| * @param array $array The array to cast | |
| * @param string $class The class to render | |
| * | |
| * @throws LogicException if the given class is not supported | |
| * @return CollectionInterface | |
| */ | |
| public function toCollection(array $array, $class) | |
| { | |
| $reflection = new \ReflectionClass($class); | |
| $collection = $reflection->newInstanceWithoutConstructor(); | |
| if ($collection instanceof MapCollectionInterface) { | |
| $collection->setAll($array); | |
| return $collection; | |
| } | |
| throw new \LogicException( | |
| sprintf("The MapCollectionCaster does not support type %s", $class) | |
| ); | |
| } | |
| /** | |
| * Support | |
| * | |
| * Return true if the array caster | |
| * support the given collection class. | |
| * | |
| * @param string $class The collection class name | |
| * | |
| * @return boolean | |
| */ | |
| public function support($class) | |
| { | |
| return in_array( | |
| MapCollectionInterface::class, | |
| class_implements($class) | |
| ); | |
| } | |
| } |