Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
13 / 13 |
ArrayCasterManager | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
6 | |
100.00% |
13 / 13 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
process | |
100.00% |
1 / 1 |
4 | |
100.00% |
9 / 9 |
|||
addCaster | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
<?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\Manager; | |
// @codingStandardsIgnoreStart | |
use CSDT\CollectionsBundle\CollectionHelper\HelperInterface\ArrayCasterManagerInterface; | |
use CSDT\CollectionsBundle\Collections\ValueSet; | |
use CSDT\CollectionsBundle\CollectionHelper\HelperInterface\ArrayCasterInterface; | |
// @codingStandardsIgnoreEnd | |
/** | |
* Array caster manager | |
* | |
* This class is used to process a cast from | |
* array to any collection that registered a | |
* caster. | |
* | |
* @category Caster | |
* @package Hephaistos | |
* @author matthieu vallance <matthieu.vallance@cscfa.fr> | |
* @license MIT <https://opensource.org/licenses/MIT> | |
* @link http://cscfa.fr | |
*/ | |
class ArrayCasterManager implements ArrayCasterManagerInterface | |
{ | |
/** | |
* Casters | |
* | |
* This property store the registered casters. | |
* | |
* @var ValueSet | |
*/ | |
protected $casters; | |
/** | |
* Construct | |
* | |
* The default ArrayCasterManager | |
* constructor | |
* | |
* @return void | |
*/ | |
public function __construct() | |
{ | |
$this->casters = new ValueSet(); | |
} | |
/** | |
* Process | |
* | |
* This method search the caster able to | |
* process the given array. It thrown an | |
* exception if no one is stored. | |
* | |
* @param array $array The array to process | |
* @param string $collectionName The collection class result | |
* | |
* @throws \ParseError if no one caster is able to parse the array | |
* @return CollectionInterface | |
*/ | |
public function process(array $array, $collectionName) | |
{ | |
foreach ($this->casters as $caster) { | |
if ($caster instanceof ArrayCasterInterface) { | |
if ($caster->support($collectionName)) { | |
return $caster->toCollection($array, $collectionName); | |
} | |
} | |
} | |
throw new \ParseError( | |
sprintf("No caster found for %s type", $collectionName) | |
); | |
} | |
/** | |
* Add caster | |
* | |
* This method allow to store an ArrayCaster | |
* instance into the manager. | |
* | |
* @param ArrayCasterInterface $caster The ArrayCaster to store | |
* | |
* @return ArrayCasterManagerInterface | |
*/ | |
public function addCaster(ArrayCasterInterface $caster) | |
{ | |
$this->casters->add($caster); | |
return $this; | |
} | |
} |